Вывод («1. треугольник»)                              линия (150,50)-(100,100)



Вывод («2. прямоугольник»)                          линия (150,50)-(200,100)

Вывод («З. кольцо»)                                        линия (100,100)-(200,100)

запрос(«номер =», п)                          кон

графический_экран

если п = 1 то                                       алг «рисунок_прямоугольника»

Рисунок_треугольника              нач

инес п = 2 то                                                  рамка (50,50) -(150, 100)

Рисунок_прямоугольника      кон

инес п = 3 то

Рисунок_кольца                      алг «рисунок_кольца»

иначе                                                    нач

Вывод («нет такого рисунка»)          окружность (100,100),20

Все                                                                     окружность (100,100), 50

кон                                                               кон

 

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

Алгоритмы :                                          Программа:

алг «Галерея картинок»                         ' Галерея картинок

нач                                                                  сls

вывод («Список картинок:»)                         print «Список картинок:»

вывод («1. треугольник»)                                print «1. треугольник»

вывод («2. прямоугольник»)                            print «2. прямоугольник»

вывод («З. кольцо»)                                           print «3. кольцо»

запрос(«номер =», п)                                        input «номер =», n

если п = 1 то                                                     if n = 1 then

рисунок_треугольника                                gosub treug

инеc п =2 то                                                     if n = 2 then

рисунок_прямоугольника                            gosub box

инеc п = 3 то                                                     if n = 3 then

рисунок_кольца                                            gosub ring

инеc п < 1 или п > 3 то                                    if n < 1 or n >3 then

вывод («нет такого рисунка»)                      print «нет такого рисунка»

все                                                                       'все

кон                                                                 end

алг «рисунок треугольника»                               treug: 'рисунок треугольника

нач                                                                           cls

графический_экран                                               screen 2,0

линия (150,50)-(100,100)                                       line (150,50)-(100,100),3

линия (150,50)-(200,100)                                       line (150,50)-(200,100),3

линия (100,100)-(200,100)                                     line (100,100)-(200,100),3

кон                                                                           return

алг «рисунок прямоугольника»                           box: 'рисунок прямоугольника

нач                                                                           cls

графический_экран                                               screen 2,0

рамка (50,50)-(150,100)                                         line (50,50)-(150,100),3,b

кон                                                                           return

алг «рисунок кольца»                                       ring: 'рисунок кольца

нач                                                                           els

графический _экран                                              screen 2,0

окружность (100,100),20                                     circle (100,100),20

окружность (100,100),50                                     circle (100,100),50

кон                                                                           return

Данный подход — составление структурированных алгоритмов — может применяться к составлению структурированных программ для любых ЭВМ на любых языках программирования — Паскаль, Си, Ада, Модула и т. д.

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

 

1. Условные действия:

если у < 0 то                                   if у < 0 then

вывод («недопустим»)                       print «недопустим»

кесли                                                 end if

 

2. Многоальтернативный выбор:

если х > 1 то                                   if х > 1 then

y : = 1                                                   у = 1

инеc х < —1 то                               elseif х < —1 then

у: = -1                                                    у = -1

иначе                                                else

у: = х                                                      у = х

кесли                                                 end if

 

3. Циклы со счетчиком:

от k = 1 до п цикл                                     for к = 1 to n

вывод (k ∙ k)                                          print k*k

кцикл                                                next k

 

4. Циклы с выходами:

цикл                                                  do

s: = s + х                                                s = s + х

при х < 1 выход                                if x < 1 then exit do

х: = x/2                                                   x = x/2

кцикл                                                loop

 

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

Пример записи структурированных алгоритмов и программ с использованием циклов для алгоритма игры-эксперимента «Звездное небо»:

 

Алгоритм                                                  Программа
алг «звездное небо»                                       ' звездное небо»

нач                                                               cls

цикл                                                                  do

запрос(«звезд=», п)                                         input «звезд=», n

при п <= 0 выход                                            if n <= 0 then exit do

графический _экран                                       screen 2,10

от k = 1 до п цикл                                               for k = 1 to n

х: = случайное [0:200]                                      х = rnd*200

у: = случайное [0:200]                                      у = rnd*200

точка (х,у)                                                         pset (x,y),3

кцикл                                                                next k

кцикл                                                                end do

кон                                                                    end

Пример структурированного алгоритма и программы с применением многоальтернативного выбора и циклов с несколькими выходами:

 

Алгоритм                                                        Программа
алг «угадай-ка»                                              'угадай-ка

нач                                                                    cls

вывод («Угадай-ка число»)                            print «Угадай-ка число»

вывод («от 1 до 100»)                                    print от 1 до 100»

z : = случайное [0:100]                                    z = int (rnd*100)

цикл                                                                  do

запрос («число =», х)                                      input «число =», х

при х = z вых                                                   if х = z then exit do

если х < z то                                                   if х < z then

вывод («мало»)                                                print «мало»

инеc х > z то                                                   elseif х > z then

вывод («много»)                                              print «много»

все                                                                     end if

кцикл                                                                end do

вывод («молодец, умница»)                          print «молодец, умница»

кон                                                                    end

 

Вопросы

 

1. Что такое алгоритмизация?

2. Что такое структурированные алгоритмы?

3. Что такое неструктурированные алгоритмы?

4. В чем достоинства структурированных программ?

5. В чем недостатки неструктурированных программ?

6. Можно ли гарантировать отсутствие ошибок в программах?

Задания

 

1. Постройте вспомогательные алгоритмы и подпрограммы с выделением параметров для рисования следующих блоков:

а) крыша;

б) дерево;

в) стена с окном;    

г) столб.

2. Предложите рисунки и составьте алгоритмы рисования, используя вспомогательные алгоритмы из предыдущего задания, для следующих строений:

а) домика с окном и деревом;

б) домика с двумя окнами;

в) домика с собачьей будкой;

г) двухэтажного домика.

3. Составьте алгоритм вывода на экран полной таблицы умножения.

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

а) многосекционных домов с различным числом секций;

б) многоэтажных домов с различным числом этажей и секций.


Дата добавления: 2019-02-26; просмотров: 244; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!