Программирование на алгоритмическом языке Тема 4. Циклы

  • docx
  • 27.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Программирование на алгоритмическом языке. Тема 4. Циклы.docx

1

 

 

 

Программирование на алгоритмическом языке

Тема 4. Циклы

 

 

 

 

 

 

 

 

 

 

 

 

Надпись: © К. Поляков, 2010-2011	http://kpolyakov.narod.ru


Цикл это многократное выполнение одинаковых действий.


 

 

 

Задача. Вывести на экран 5 раз слово «Привет».

Особенность: одинаковые действия выполняются 5 раз.

 



алг Привет нач

вывод "Привет", нс вывод "Привет", нс вывод "Привет", нс вывод "Привет", нс вывод "Привет", нс

кон

 

 

Надпись: алг Привет нач
вывод "Привет", нс вывод "Привет", нс вывод "Привет", нс вывод "Привет", нс вывод "Привет", нс
кон

 



 


 

 

начало цикла


алг Привет нач

алг Привет нач

нц 5 раз

вывод "Привет!", нс кц

кон

 
нц 5 раз


тело цикла


 

конец цикла


вывод "Привет!", нс кц

вывод "Привет!", нс

 
кон


 

 

 

 



Блок-схема:



алг Привет нач

цел N

вывод "Сколько раз?", нс ввод N

нц N раз

вывод "Привет!", нс кц

кон

 
Число шагов переменная

Задача: ввести количество повторения с клавиатуры.

Надпись: алг Привет нач
цел N
вывод "Сколько раз?", нс ввод N
нц N раз
вывод "Привет!", нс кц
кон


«3»: Ввести натуральное число и вывести в строчку все числа от 1 до этого числа.

Пример:

Введите натуральное число:

4

Ответ: 1 2 3 4

«4»: Ввести два целых числа, найти их произведение, не используя операцию умножения.

Пример:

Введите два числа: 4  15

4*15=60


«5»: Ввести натуральное число N и найти сумму всех чисел от 1 до N (1+2+3+…+N).

Пример:

Введите число слагаемых: 100

Сумма чисел от 1 до 100 равна 5050



алг Привет нач

нц 5 раз

вывод "Привет!", нс кц

кон

 
Циклы

 


 

 

 

 

N := N + 1

 
N := N + 1



Блок-схема алгоритма

 

 



алг Привет 2 нач

цел N N:= 0

нц пока N <> 5

вывод "Привет!", нс N:= N + 1

кц

кон

 

Надпись: алг Привет 2 нач
цел N N:= 0
нц пока N <> 5
вывод "Привет!", нс N:= N + 1
кц
кон


алг Привет 3 нач

цел N N:= 5

нц пока N <> ???

вывод "Привет!", нс

???

кц кон

 

???

 

???

 
Вместо знаков вопроса добавьте числа и операторы так, чтобы цикл выполнился ровно 5 раз:

 



 

 

 

 

 

 

 

алг Пример 1 нач

цел N N:= 1

нц пока N <= 5 вывод N, нс N:= N + 1

кц

кон

 

алг Пример 1 нач

цел N N:= 1

нц пока N <= 5 вывод N, нс N:= N + 1

кц

кон

 
1

2

3

4

5


 

 

 

 

 

 

 

 

 

 

алг Пример 2 нач

цел N N:= 1

нц пока N <= 5 вывод N, нс N:= N + 2

кц

кон

 

алг Пример 2 нач

цел N N:= 1

нц пока N <= 5 вывод N, нс N:= N + 2

кц

кон

 
1

3

5


 

алг Пример 3 нач

цел N N:= 2

нц пока N <> 5 вывод N, нс N:= N + 2

кц

кон

 

алг Пример 3 нач

цел N N:= 2

нц пока N <> 5 вывод N, нс N:= N + 2

кц

кон

 
2

4

6

8

10

12

14

16

...


 

 

 

 

 

 

 

алг Пример 4 нач

цел N N:= 1

нц пока N <= 5 вывод N*N*N, нс N:= N + 1

кц

кон

 

алг Пример 4 нач

цел N N:= 1

нц пока N <= 5 вывод N*N*N, нс N:= N + 1

кц

кон

 
1

8

27

64

125


 

 

 

 

 

 

 

алг Пример 5 нач

цел N N:= 5

нц пока N >= 1 вывод N*N*N, нс N:= N - 1

кц

кон

 

алг Пример 5 нач

цел N N:= 5

нц пока N >= 1 вывод N*N*N, нс N:= N - 1

кц

кон

 
125

64

27

8

1


«3»: Ввести натуральное число вывести квадраты и кубы всех чисел от 1 до этого числа.

Пример:

Введите натуральное число: 3

1:

1

1

2:

4

8

3:

9

27

«4»: Ввести два целых числа a и b (a b) и вывести квадраты все чисел от a до b.

Пример:

Введите два числа: 4 5

4*4=16

5*5=25


«5»: Ввести два целых числа a и b (a b) и вывести сумму квадратов всех чисел от a до b.

Пример:

Введите два числа: 4 10

Сумма квадратов 371



Циклы с условием

Пример: Распилить бревно на поленья. Сколько поленьев получится?

Задача: Ввести целое число (<2000000) и определить число цифр в нем.

Идея решения: Отсекаем последовательно последнюю цифру, увеличиваем счетчик.

 

n

count

123

0

12

1

1

2

0

3

Проблема: Неизвестно, сколько шагов надо сделать.

Решение: Надо остановиться, когда n = 0, т.е. надо делать

«пока n <> .



Блок-схема алгоритма

 



алг Число цифр нач

цел n, count

вывод "Введите целое число", нс ввод n

count:= 0

 

 

 

 

вывод числе ", n, " нашли ", count, " цифр" кон

 
Программа

алг Число цифр нач

, n1

 
цел n, count

; n1:= n

 
вывод "Введите целое число", нс ввод n

нц пока n<>0 count:= count + 1 n:= div(n,10)

кц

 
count:= 0

 

 

 

 

 

 

 

 

 

 

 


n,

 
вывод числе ", кон


" нашли ", count, " цифр"


? Что плохо?


нц пока a < b b:= b - 2 кц

 
Особенности:

        

нц пока a < 10 и b > 5 a:= a + 5; b:= b - 2

кц

 

a < 10 и b > 5

 
можно использовать сложные условия:


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



Особенности:

         условие проверяется при каждом входе в цикл

        

Надпись: a := 4; b := 6
нц пока a > b; a:= a – b кц

a := 4; b := 6

нц пока a > b; a:= a b кц

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

         если условие никогда не станет ложным, программа

a:= 4; b:= 6

нц пока a < b; d:= a + b кц

 
зацикливается

Надпись: a:= 4; b:= 6
нц пока a < b; d:= a + b кц



a:= 4; b:= 6

нц пока a < b; a:= a + 1 кц

 

a:= 4; b:= 6

нц пока a < b; a:= a + b кц

 

a:= 4; b:= 6

нц пока a > b; a:= a + 1 кц

 

a:= 4; b:= 6

нц пока a < b; b:= a b кц

 

a:= 4; b:= 6

нц пока a < b; a:= a 1 кц

 
Сколько раз выполняется цикл?

 

 

 

 

 


Задания

«3»: Ввести целое число и определить, верно ли, что в нём ровно 3 цифры.

Пример:

 

Введите

число:

Введите

число:

123

 

1234

 

Да.

 

Нет.

 

«4»: Ввести целое число и найти сумму его цифр.

Пример:

Введите целое число:

1234

Сумма цифр числа 1234 равна 10.


Задания

«5»: Ввести целое число и определить, верно ли, что в его записи есть две одинаковые цифры, стоящие рядом.

Пример:

Введите целое число:                   Введите целое число: 1232                1224

Нет.                   Да.

«6»: Ввести целое число и определить, верно ли, что в его записи есть две одинаковые цифры, НЕ обязательно стоящие рядом.

Пример:

Введите целое число:                   Введите целое число: 1234                                                   1242

Нет.                   Да.


Задания-2

«3»: Ввести целое число и определить, верно ли, что в нём ровно 1 цифра «9».

Пример:

 

Введите

число:

Введите

число:

193

 

1994

 

Да.

 

Нет.

 

«4»: Ввести целое число и определить, верно ли, что все его цифры четные.

Пример:

 

Введите

число:

Введите

число:

2684

 

2994

 

Да.

 

Нет.

 


Задания-2

«5»: Ввести целое число и определить, верно ли, что все его цифры расположены в порядке возрастания.

Пример:

Введите целое число:                   Введите целое число: 1238                1274

Да.                    Нет.

«6»: Ввести целое число и «перевернуть» его, так чтобы первая цифра стала последней и т.д.

Пример:

Введите целое число:                   Введите целое число: 1234                782

4321                   287



Вычисление НОД

НОД = наибольший общий делитель двух натуральных чисел это наибольшее число, на которое оба исходных числа делятся без остатка.

Перебор:

1.          

1. Записать в переменную k минимальное из двух чисел.

2. Если a и b без остатка делятся на k, то стоп.

3. Уменьшить k на 1.

4. Перейти к шагу 2.

 
Записать в переменную k минимальное из двух чисел.

2.           Если a и b без остатка делятся на k, то стоп.

3.           Уменьшить k на 1.

4.           Перейти к шагу 2.

 

это цикл с условием!

© К. Поляков, 2010-2011                                                                                                        http://kpolyakov.narod.ru

 
? Почему алгоритм обязательно закончится?



Алгоритм Евклида

Надо: вычислить наибольший общий делитель (НОД) чисел a и b.

Заменяем большее из двух чисел разностью большего и меньшего до тех пор, пока они не станут равны. Это и есть НОД.

 

 

 

 


 

НОД(a,b)= НОД(a-b, b)

= НОД(a, b-a)

 

НОД(a,b)= НОД(a-b, b)

= НОД(a, b-a)

 
Пример:


Евклид

(365-300 до. н. э.)


НОД (14, 21) = НОД (14, 21-14) = НОД (14, 7)

= НОД (7, 7) = 7

много шагов при большой разнице чисел:

НОД (1998, 2) = НОД (1996, 2) = … = 2



Блок-схема алгоритма

 




нц пока a <> b если a > b

то a:= a - b иначе b:= b - a

все

кц

 
Алгоритм Евклида

 

 


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

НОД(a,b)= НОД(mod(a,b), b)

= НОД(a, mod(b,a))

 
станет равно нулю. Тогда большее это НОД.

Надпись: НОД(a,b)= НОД(mod(a,b), b)
= НОД(a, mod(b,a))

 

Пример:

НОД (14, 21) = НОД (14, 7) = НОД (0, 7) = 7

НОД(2·a,2·b)= 2·НОД(a, b)

НОД(2·a,b)= НОД(a, b) | при нечетном b

 
Еще один вариант:

Надпись: НОД(2·a,2·b)= 2·НОД(a, b)
НОД(2·a,b)= НОД(a, b) | при нечетном b


Алгоритм Евклида

«3»: Составить программу для вычисления НОД с помощью алгоритма Евклида.

«4»: Составить программу для вычисления НОД с помощью модифицированного алгоритма Евклида и заполнить таблицу:

 

 

a

64168

358853

6365133

17905514

549868978

b

82678

691042

11494962

23108855

298294835

НОД(a,b)

 

 

 

 

 


Алгоритм Евклида

«5»: Выполнить задание на «4» и подсчитать число шагов алгоритма для каждого случая.

 

a

64168

358853

6365133

17905514

549868978

b

82678

691042

11494962

23108855

298294835

НОД(a,b)

 

 

 

 

 

шагов

 

 

 

 

 



Цикл с переменной

Задача: вывести кубы чисел от 1 до 8.


 

1.       Нужны ли переменные? Сколько?

2.       Как они должны изменяться?

3.       Нужен ли цикл?



Блок-схема алгоритма

 


Цикл с переменной

Задача: вывести кубы натуральных чисел от 1 до 8.

 

алг Кубы нач

цел N, кубN N:= 1

нц пока N <= 8

кубN:= N*N*N вывод кубN, нс N:= N + 1

кц

кон

 
алг Кубы нач

цел N, кубN


N:= 1

нц пока


N <= 8


3 действия с N


кубN:= N*N*N вывод кубN, нс N:= N + 1

кц

кон


Цикл с переменной

Задача: вывести кубы натуральных чисел от 1 до 8.

 

алг Кубы нач

цел N, кубN

 

 

 

 

 

кон

 
алг Кубы


нач

цел N, кубN


для 1,2,3,…,8


нц для N от 1 до 8 кубN:= N*N*N вывод кубN, нс

кц кон



Цикл с переменной

алг Кубы нач

цел N, кубN

 

 

 

 

 

кон

 
Задача: вывести кубы чётных чисел от 2 до 8.

 




a := 1

нц для i от 1 до 3; a:=a+1 кц

 

a := 1

нц для i от 3 до 1; a:=a+1 кц

 

a := 1

нц для i от 1 до 3 шаг -1; a:=a+1 кц

 

a := 1

нц для i от 3 до 1 шаг -1; a:=a+1 кц

 
Сколько раз выполняется цикл?

 


 


 

 



Цикл с переменной

Особенности:

         переменная цикла может быть только целой (цел)

         начальное и конечное значения и шаг целые

        

нц для n от 1 до 4 вывод n кц

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


         если шаг > 0 и конечное значение < начального, цикл не выполняется ни разу (проверка условия в начале цикла, цикл с предусловием)

         если шаг < 0 и конечное значение > начального, цикл не выполняется ни разу



нц для i от 1 до 10

| тело цикла

кц

 

i:= 1

нц пока i <= 10

| тело цикла i:= i + 1

кц

 

нц для i от a до b шаг -1

| тело цикла

кц

 

i:= a

нц пока i >= b

| тело цикла i:= i - 1

кц

 
Замена одного вида цикла на другой

 

 

Надпись: нц для i от a до b шаг -1
| тело цикла кц
                                                                    Надпись: i:= a
нц пока i >= b
| тело цикла i:= i - 1
кц


 


Задания

«3»: Ввести натуральное число N и вывести числа от N до 1 (через одно) в порядке убывания.

Пример:

Введите натуральное число: 8

Ответ: 8 6 4 2


Задания

«4»: Ввести два целых числа a и b (a b) и вывести кубы всех чисел от a до b.

Пример:

Введите два числа:

4 6

4*4*4=64

5*5*5=125

6*6*6=216

«5»: Ввести целое число a и вывести сумму квадратов всех чисел от 1 до a с шагом 0.1.


Пример:

Введите последнее число: 3

Сумма 91.7


12 + 1.12 + 1.22 +…+ a2


Задания

«4»: Ввести a и b и вывести квадраты и кубы чисел от a до b.

Пример:

 

Введите

границы

интервала:

4 6

 

 

4: 16

64

 

5: 25

125

 

6: 36

216

 

«5»: Вывести квадраты и кубы 10 чисел следующей последовательности: 1, 2, 4, 7, 11, 16,

Пример:

 

1:

1

1

2:

4

8

4:

16

64

...

46: 2116 97336


 

Скачано с www.znanio.ru