Блок схема сообщение об ошибке

Программист по неволе

24 / 24 / 8

Регистрация: 22.04.2015

Сообщений: 476

Записей в блоге: 1

1

Каким элементом блок-схемы описать вывод сообщения об ошибке?

17.06.2015, 12:05. Показов 1272. Ответов 6


Студворк — интернет-сервис помощи студентам

Каким элементом блок-схемы описать вывод сообщения об ошибке?



0



Почетный модератор

64291 / 47589 / 32740

Регистрация: 18.05.2008

Сообщений: 115,181

17.06.2015, 12:45

2

Цитата
Сообщение от Alex_From_777
Посмотреть сообщение

вывод сообщения об ошибке

Первое слово вроде отвечает на вопрос…



1



Программист по неволе

24 / 24 / 8

Регистрация: 22.04.2015

Сообщений: 476

Записей в блоге: 1

17.06.2015, 12:51

 [ТС]

3

Получается ввод-вывод данных? Но разве подобного рода сообщение относится к данным? Ведь одно из свойств данных быть пригодными для обработки? Какого типа тогда эти данные?

Добавлено через 38 секунд

Цитата
Сообщение от Puporev
Посмотреть сообщение

Первое слово

просто цитата



0



Почетный модератор

64291 / 47589 / 32740

Регистрация: 18.05.2008

Сообщений: 115,181

17.06.2015, 12:52

4

Вот пример

Изображения

 



1



Почетный модератор

64291 / 47589 / 32740

Регистрация: 18.05.2008

Сообщений: 115,181

17.06.2015, 12:53

5

Ошибочно на вводе написал y.



0



Программист по неволе

24 / 24 / 8

Регистрация: 22.04.2015

Сообщений: 476

Записей в блоге: 1

17.06.2015, 13:01

 [ТС]

6

А все таки к какому типу данных будет принадлежать оное? Текстовой?

Цитата
Сообщение от Puporev
Посмотреть сообщение

Вот



0



Почетный модератор

64291 / 47589 / 32740

Регистрация: 18.05.2008

Сообщений: 115,181

17.06.2015, 13:03

7

Цитата
Сообщение от Alex_From_777
Посмотреть сообщение

к какому типу данных будет принадлежать оное?

Извини, в нашем дурдоме это не проходили..



0



Занятие 5. Выполнение блок-схем

Блок-схема сама по себе не содержит ответа. Чтобы получить результат, нужно выполнить блок-схему.

Выполнение блок-схемы – это прохождение всех действий блок-схемы согласно алгоритму от блока Начало до блока Конец для получения результата.

Если блок-схема составлена корректно, то, выполнив ее, человек получит ответ к своей задаче. Если же при составлении блок-схемы были допущены ошибки, то исполнитель либо вообще не дойдет до блока Конец, либо получит неверный ответ.

Для выполнения нам понадобится поле для расчетов (аналог «оперативной памяти») и поле для вывода результата (аналог экрана для вывода данных). Экран будем показывать несколько раз в зависимости от вывода новых данных на экране.

Выполнение блок-схемы для примера 3. Даны числа a=2, b=7. Вычислить сумму S и разность R чисел a и b.

Выполнение блок-схемы приведем в табл. 2.2.

Таблица
2.2.
Выполнение блок-схемы для примера 3

Расчеты:

Начало
a=2
b=7
S=a+b={подставляем значения a и b}=2+7=9
R=a-b={подставляем значения a и b}=2-7=-5
Выводим на экран S=9, R=-5:
					
Вывод данных (экран)
S=9
R=-5
							
Конец.

Выполнение блок-схемы для примера 6. Даны числа a=2, b=7. Вычислить сумму S и разность R чисел a и b. Сравнить полученные значения S и R и указать большее из них.

Выполнение блок-схемы приведем в табл. 2.3.

Таблица
2.3.
Выполнение блок-схемы для примера 6

Расчеты:
Начало
a=2
b=7
S=a+b=2+7=9
R=a-b=2-7=-5
Выводим на экран S=9, R=-5:
				
Вывод данных (экран)
S=9
R=-5
						
S>R   9>-5   да, верно
Выводим на экран "Max S":
				
Вывод данных (экран)
S=9
R=-5
Max S
						
Конец.

Выполнение блок-схемы для примера 9. Даны числа a, b. Известно, что число а меняется от -10 до 10 с шагом 5, b=7 и не изменяется. Вычислить сумму S и разность R чисел a и b для всех значений a и b.

Выполнение блок-схемы с предусловием приведем в табл. 2.4.

Таблица
2.4.
Выполнение блок-схемы с предусловием для примера 9

Расчеты:
Начало
b=7
a=-10
a≤10   -10≤10   да, верно
S=a+b=-10+7=-3
R=a-b=-10-7=-17
Вывод S, R
					
Экран
S=-3   R=-17
a=a+5=-10+5=-5
{Идем по стрелке вверх}
a≤10   -5≤10   да, верно
S=a+b=-5+7=2
R=a-b=-5-7=-12
Вывод S, R
				
Экран
S=-3   R=-17
S=2   R=-12
						
a=a+5=-5+5=0
{Идем по стрелке вверх}
a≤10   0≤10   да, верно
S=a+b=0+7=7
R=a-b=0-7=-7
Вывод S, R
Экран
S=-3   R=-17
S=2   R=-12
S=7   R=-7
						
a=a+5=0+5=5
{Идем по стрелке вверх}
a≤10   5≤10   да, верно
S=a+b=5+7=12
R=a-b=5-7=-2
Вывод S, R
				
Экран
S=-3   R=-17
S=2   R=-12
S=7   R=-7
S=12   R=-2
						
a=a+5=5+5=10
{Идем по стрелке вверх}
a≤10   10≤10   да, верно
S=a+b=10+7=17
R=a-b=10-7=3
Вывод S, R
				
Экран
S=-3   R=-17
S=2   R=-12
S=7   R=-7
S=12   R=-2
S=17   R=3
						
a=a+5=10+5=15
{Идем по стрелке вверх}
a≤10   15≤10   нет, ложно {выходим из цикла}
Конец.
				

Выполнение блок-схемы с постусловием приведем в табл. 2.5.

Таблица
2.5.
Выполнение блок-схемы с постусловием для примера 9

Расчеты:
Начало
b=7
a=-10
S=a+b=-10+7=-3
R=a-b=-10-7=-17
Вывод S, R
					
Экран
S=-3   R=-17
a=a+5=-10+5=-5
a≤10   -5≤10   да, верно
{Идем по стрелке вверх}
S=a+b=-5+7=2
R=a-b=-5-7=-12
Вывод S, R
				
Экран
S=-3   R=-17
S=2   R=-12
						
a=a+5=-5+5=0 
a≤10   0≤10   да, верно
{Идем по стрелке вверх}
S=a+b=0+7=7
R=a-b=0-7=-7
Вывод S, R
Экран
S=-3   R=-17
S=2   R=-12
S=7   R=-7
						
a=a+5=0+5=5 
a≤10   5≤10   да, верно
{Идем по стрелке вверх}
S=a+b=5+7=12
R=a-b=5-7=-2
Вывод S, R
				
Экран
S=-3   R=-17
S=2   R=-12
S=7   R=-7
S=12   R=-2
						
a=a+5=5+5=10
a≤10   10≤10   да, верно
{Идем по стрелке вверх}
S=a+b=10+7=17
R=a-b=10-7=3
Вывод S, R
				
Экран
S=-3   R=-17
S=2   R=-12
S=7   R=-7
S=12   R=-2
S=17   R=3
						
a=a+5=10+5=15
a≤10   15≤10   нет, ложно {выходим из цикла}
Конец.
				

Пример 10. Даны числа a, b. Известно, что число а меняется от -10 до 10 с шагом 5, b=7 и не изменяется. Вычислить сумму S и разность R и сравнить полученные значения суммы и разности для всех значений a и b.

Выполнение блок-схемы с предусловием приведем в табл. 2.6.

Таблица
2.6.
Выполнение блок-схемы с предусловием для примера 10

Расчеты:
Начало
b=7
a=-10
a≤10   -10≤10   да, верно
S=a+b=-10+7=-3
R=a-b=-10-7=-17
Вывод S, R
S>R   -3>-17   да, верно
Вывод "Max S"
					
Вывод данных (экран)
S=-3   R=-17   Max S
a=a+5=-10+5=-5
{Идем по стрелке вверх}
a≤10   -5≤10   да, верно
S=a+b=-5+7=2
R=a-b=-5-7=-12
Вывод S, R
S>R   2>-12   да, верно
Вывод "Max S"
				
Вывод данных (экран)
S=-3   R=-17   Max S
S=2   R=-12   Max S
						
a=a+5=-5+5=0
{Идем по стрелке вверх}
a≤10   0≤10   да, верно
S=a+b=0+7=7
R=a-b=0-7=-7
Вывод S, R
S>R   7>-7   да, верно
Вывод "Max S"
Вывод данных (экран)
S=-3   R=-17   Max S
S=2   R=-12   Max S
S=7   R=-7   Max S
						
a=a+5=0+5=5 
a≤10   5≤10   да, верно
{Идем по стрелке вверх}
S=a+b=5+7=12
R=a-b=5-7=-2
Вывод S, R
S>R   12>-2   да, верно
Вывод "Max S"
				
Вывод данных (экран)
S=-3   R=-17   Max S
S=2   R=-12   Max S
S=7   R=-7   Max S
S=12   R=-2   Max S
						
a=a+5=5+5=10
{Идем по стрелке вверх}
a≤10   10≤10   да, верно
S=a+b=10+7=17
R=a-b=10-7=3
Вывод S, R
S>R   17>3   да, верно
Вывод "Max S"
				
Вывод данных (экран)
S=-3   R=-17   Max S
S=2   R=-12   Max S
S=7   R=-7   Max S
S=12   R=-2   Max S
S=17   R=3   Max S
						
a=a+5=10+5=15
{Идем по стрелке вверх}
a≤10   15≤10   нет, ложно {выходим из цикла}
Конец.
				

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

Краткие итоги

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

Вопросы

  1. Что такое блок-схема?
  2. Какие типы блоков бывают?
  3. Какие блоки используются при реализации линейного, разветвляющегося, циклического алгоритмов?
  4. Можно ли составить разные варианты блок-схем для одной и той же задачи?
  5. Какие виды циклического алгоритма бывают?
  6. Какие пункты должны присутствовать в любом цикле?
  7. Что такое выполнение блок-схемы?
  8. Для чего следует выполнять блок-схему?

Упражнения

  1. Составьте блок-схемы для задачи по походу в магазин за яблоками. Используйте линейный, разветвляющийся и циклический алгоритмы.
  2. Составьте блок-схему для нахождения корней квадратного уравнения через дискриминант. Используйте разветвляющийся алгоритм. Получите ответ, выполнив блок-схему.
  3. Составьте блок-схемы для вывода на экран целых чисел от 1 до 10. Используйте цикл с предусловием, с постусловием. Выполните блок-схемы.

Блок-схемы: основные принципы и правила создания

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

Определение

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

Основные принципы создания блок-схем

  1. Четкость и однозначность: каждый блок должен иметь ясное и однозначное описание, чтобы избежать двусмысленности.
  2. Иерархическая разбивка: сложные процедуры и алгоритмы должны быть разбиты на более простые блоки, чтобы упростить понимание.
  3. Единообразие символов: использование стандартных символов и обозначений позволяет сделать блок-схемы понятными и удобными для работы.
  4. Последовательность шагов: блоки должны быть соединены стрелками или линиями, указывающими направление движения в программе или процессе.
  5. Гибкость и адаптируемость: блок-схемы должны быть легко модифицируемыми для внесения изменений в алгоритмы или программы.

Общие правила создания блок-схем

  1. Главный процесс начинается с символа «Начало» и заканчивается символом «Конец».
  2. Блоки промежуточных шагов представляются в виде прямоугольников с описанием этого шага или операции, которую необходимо выполнить.
  3. Условные операторы и логические проверки обозначаются ромбовидными символами.
  4. Ветвления процесса могут быть обозначены символами «Если/Иначе» или «Выбор».
  5. Циклы или повторяющиеся процессы изображаются символом «Цикл».

Пример блок-схемы

Начало -> Ввод данных -> Проверка данных -> Если данные корректные 
                                        -> -> Выполнение операции 
                                        -> Иначе 
                                            -> -> Вывод сообщения об ошибке 
Конец

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

Блок-схемы являются удобным инструментом для представления сложных процессов и алгоритмов. Они помогают визуально представить последовательность выполнения операций и упрощают понимание алгоритмов и программ. Правильное использование блок-схем позволяет легко анализировать и оптимизировать процессы.

Рис. 2 Блок схема
алгоритма программы

5.4Текст программы

program
prim_1;

{вычисления
по
формулам}

var
x,y:real;

sum,m,p:real;

begin

write(‘введите
x=’);readln(x);

write(‘введите
y=’);readln(y);

sum:=x*x+y*y;

m:=abs(x-y);

p:=x*y;

writeln(‘сумма
квадратов=’,sum:6:3);

writeln(‘модуль
разности=’,m:6:3);

writeln(‘произведение=’,p:6:3);

readln;

end.

5.5Тестирование

Вводим два числа,
проверяя корректность работы программы:
(1) при двух положительных числах, где Х
больше Y; (2) при двух
отрицательных числах, где Y
больше X. Программа ведёт
себя корректно.

1:

Введите Х = 3

Введите Y
= 2

Ссума квадратов
sum = 13.000

Модуль разности
m = 1.000

Произведение р
= 6.000

2:

Введите Х = -5

Введите Y
= -2

Ссума квадратов
sum = 29.000

Модуль разности
m = 3.000

Произведение р
= 10.000

Пример 2: Значения
переменных А и В задаются оператором
ввода. Программа должна отпечатать А >
B, A < B или A = B в зависимости от значений
А и В.

Рис.2. Блок-схема
для условного оператора

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

program prim_2;
{использование условного оператора}
var a,b:real;
begin
    write('введите а=');readln(a); 
    write('введите b=');readln(b);
    if a>b then writeln('А больше В')
           else if a<b then writeln('А меньше В')
                       else writeln('А равно В');
end.

Пример 3:
Сравнить возраст брата и сестры и
выводит соответствующее сообщение.

Вариант
1:

var
age1,age2: integer;

begin

write(‘Введите
возраст
брата:
‘); readln(age1);

write(‘Введите
возраст
сестры:
‘);readln(age2);

if
age1>age2 then writeln(‘Брат старше.’)

else
if age1<age2 then writeln(‘Сестра старше.’)

else
writeln(‘Они близнецы.’);

end.

Вариант 2:

var
age1,age2: integer;

begin

write(‘Введите
возраст брата: ‘); readln(age1);

write(‘Введите
возраст сестры: ‘);readln(age2);

if
age1>age2 then writeln(‘Брат старше.’);

if
age1<age2 then writeln(‘Сестра старше.’);

if
age1=age2 then writeln(‘Они близнецы.’);

end.

Пример
4
:
Определить день недели известной даты.

var
d,m,y: integer; n: longint;

begin

writeln(‘Введите
день, месяц, год даты (например: 3 12
1964)’);

readln(d,m,y);

if(m>=2)then
m:=m+1

else

begin

m:=m+13;
y:=y-1;

end;

n:=trunc(365.25*y)+trunc(30.6*m)+d-621050;
n:=n-trunc(n/7)*7+1;

case
n of

1:
write(‘понедельник’);

2:
write(‘вторник’);

3:
write(‘среда’);

4:
write(‘четверг’);

5:
write(‘пятница’);

6:
write(‘суббота’);

7:
write(‘воскресенье’);

end;
writeln;

end.

6Практическая часть

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

Задание
1
Составить
программу для вычисления по формулам.
Предусмотреть задание исходных данных
при помощи оператора ввода.

1. Треугольник
задан длинами сторон a и b, и величиной
угла С. Найти сторону с и площадь S данного
треугольника.


;
,
где

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

2. Треугольник
задан длинами сторон. Найти длины высот
:


;
;

3. Треугольник
задан длинами сторон. Найти длины медиан:


;
;

4. Треугольник
задан длинами сторон. Найти длины
биссектрис:


;
;

5. Треугольник
задан длинами сторон. Найти углы
треугольника:


;
;

6.Даны два угла
треугольника A, B и высота ha .
Вычислить площадь треугольника и две
стороны по формулам:


;
;
;

7. Даны два угла
треугольника B,С и высота ha .
Вычислить длины всех сторон по формулам:


;
;

8. В треугольнике
заданы сторона a и углы В и С. Найти
площадь S и стороны b и c:


;
;
;

9. В треугольнике
заданы сторона a, высота ha и угол
С. Найти стороны b,с и площадь S.

;
;

10. Треугольник
задан координатами своих вершин. Найти
площадь треугольника:

;

Замечание: расстояние
между точками A(x1, y1) и B(x2,
y2), расположенными на плоскости
рассчитывается:

11. Треугольник
задан координатами своих вершин. Найти
периметр и площадь треугольника.

12. Вокруг треугольника
со сторонами a, b, c описана окружность.
Определить ее радиус R, угол треугольника
A и площадь, ограниченную стороной a и
радиусами, проведенными в вершины B, C.


;
;

13. В окружность
радиуса R вписан правильный треугольник.
Определить длину его стороны a, площадь
S и площадь круга S0 , вписанного
в треугольник:


;
;

14. Вычислить
значения Z1 и Z2 по формулам:


;

15. Опредлить
дальность полета тела, запущенного с
начальной скоростью V0 с высоты h
под углом к горизонту ,
пренебрегая сопротивлением воздуха.
Траектория движения тела описывается
уравнениями:


;
,
где

,
V0x, V0y
компоненты скорости V0
вдоль осей X и Y. Замечание: в момент
падения тела Y=0.

Задание 2.
Составить программу для вычисления.
Предусмотреть задание исходных данных
при помощи оператора ввода
.

1. Написать программу
вычисления объема параллелепипеда.
Значения вводятся с клавиатуры

2. Написать программу
вычисления объема и площади поверхности
шара.

3. Написать программу
вычисления объема цилиндра.

4. Написать программу
вычисления стоимости покупки некоторого
количества (по весу) помидоров, огурцов
и яблок.

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

6. Вычислить
расстояние между двумя точками с
координатами х1, у1 и х2, у2.

7. Треугольник
задан длинами сторон. Найти: длины высот
и медиан.

8. Вычислить период
колебания маятника длины l.

9. Определить силу
притяжения F между
телами массы m1 и
m2, находящимися
на расстоянии r друг
от друга.

10. Даны гипотенуза
и катет прямоугольного треугольника.
Найти второй катет и радиус вписанной
окружности.

11. Даны два
действительных числа a
и b. Получить их
сумму, разность и произведение.

12. Даны действительные
числа x и y. Получить

13. Даны два
действительных положительных числа.
Найти среднее арифметическое и среднее
геометрическое этих чисел.

14. Даны два
действительных числа. Найти среднее
арифметическое и среднее геометрическое
их модулей.

15. Даны катеты
прямоугольного треугольника. Найти его
гипотенузу и площадь.

Задание 3:
Составить программу с использованием
условного оператора. Предусмотреть
задание исходных данных при помощи
оператора ввода.

  1. Написать программу,
    которая вычисляет частное от деления
    двух чисел. Программа должна проверять
    правильность введенных пользователем
    данных и, если они неверные (делитель
    равен нулю), выдавать сообщение об
    ошибке.

  2. Написать программу
    вычисления площади кольца. Программа
    должна проверять правильность исходных
    данных.

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

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

  5. Написать программу
    вычисления стоимости покупки с учетом
    скидки. Скидка в 10% предоставляется,
    если сумма покупки больше 1000 руб.

  6. Написать программу
    вычисления стоимости покупки с учетом
    скидки. Скидка в 3% предоставляется в
    том случае, если сумма покупки больше
    500 руб., в 5% — если сумма больше 1000 руб.

  7. Написать программу
    проверки знания даты основания
    Санкт-Петербурга. В случае неверного
    ответа пользователя программа должна
    выводить правильный ответ.

  8. Написать программу
    проверки знания даты начала второй
    мировой войны. В случае неверного ответа
    пользователя программа должна выводить
    правильный ответ.

  9. Написать программу
    проверки знания истории архитектуры.
    Программа должна вывести вопрос и три
    варианта ответа. Пользователь должен
    выбрать правильный ответ и ввести его
    номер.

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

  11. Даны действительные
    положительные числа x,
    y z.
    Выяснить существует ли треугольник с
    длинами сторон x, y
    z. Если треугольник
    существует, то ответить – является ли
    он остроугольным.

  12. Даны действительные
    числа a1, b1,
    c1, a2,
    b2, c2.
    Выяснить, верно ли, что

    ,
    и если верно, то найти решение системы
    линейных уравнений

(при выполнении
неравенства система заведомо совместна
и имеет единственное решение).

  1. Вывести на экран
    большее из двух целых чисел

  2. Даны целые числа
    a, b,
    c. Если a
    b
    c,
    то все числа заменить их квадратами,
    если a > b
    >
    c, то каждое число
    заменить наибольшим из них, в противном
    случае сменить знак каждого числа.

  3. Вычислить значение
    функции:

Задание 4:
Составить программу на использование
оператора выбора Case

  1. Написать программу,
    которая запрашивает у пользователя
    номер месяца и выводит соответствующее
    название времени года. В случае, если
    пользователь укажет недопустимое
    число, программа должна вывести сообщение
    «Ошибка ввода данных».

  2. Написать программу,
    которая запрашивает у пользователя
    номер дня недели и выводит одно из
    сообщений: «Рабочий день», «Суббота»
    или «Воскресенье».

  3. Написать программу,
    вычисляющую стоимость междугороднего
    телефонного разговора (цена одной
    минуты определяется расстоянием до
    города, в котором находится абонент).
    Исходными данными для программы являются
    код города и продолжительность разговора.

  4. Написать программу,
    которая после введенного с клавиатуры
    числа (в диапазоне от 1 до 999), обозначающего
    денежную единицу, дописывает слово
    «рубль» в правильной форме. Например,
    12 рублей, 21 рубль и т. д.

  5. Написать программу,
    которая после введенного с клавиатуры
    числа (в диапазоне от 1 до 99), обозначающего
    денежную единицу, дописывает слово
    «копейка» в правильной форме.
    Например, 5 копеек, 41 копейка и т. д.

  6. Написать программу,
    которая вычисляет дату следующего дня.

  7. Написать программу,
    которая по номеру месяца выдает время
    года.

  8. Написать программу
    преобразования цифр в слова.

  9. Написать программу,
    классифицирующую треугольники
    (остроугольные, прямоугольные,
    тупоугольные), если даны углы.

  10. Написать программу,
    которая в зависимости от того введена
    ли открытая скобка или закрытая,
    напечатать «открытая круглая скобка»
    или «закрытая фигурная скобка».
    (Учитывать круглые, квадратные, фигурные
    скобки).

  11. Написать программу,
    которая в зависимости от введённого
    символа L, S, V программа должна вычислять
    длину окружности; площадь круга; объём
    цилиндра.

  12. Напишите программу,
    которая по введенному числу из промежутка
    0..24, определяет время суток.

  13. Определить,
    является ли введенная буква русского
    алфавита гласной.

  14. Написать программу,
    которая в зависимости от значения
    переменной А на экран выводится
    наименование оценки. Предусмотреть
    вывод сообщения об ошибке в случае,
    когда введено число вне интервала 2..5.

  15. Написать программу,
    которая если переменная Ch будет буквой
    (‘A’..’Z’, ‘a’..’z’), цифрой (‘0’..’9′) или оператором
    (‘+’, ‘-‘, ‘*’, ‘/’), будет соответственно
    выдавать одно из сообщений ‘Буква’,
    ‘Цифра’, ‘Оператор’. В противном случае
    программа напечатает сообщение
    ‘Специальный символ’.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Схемаэто абстракция какого-либо процесса или системы, наглядно отображающая наиболее значимые части. Схемы широко применяются с древних времен до настоящего времени — чертежи древних пирамид, карты земель, принципиальные электрические схемы. Очевидно, древние мореплаватели хотели обмениваться картами и поэтому выработали единую систему обозначений и правил их выполнения. Аналогичные соглашения выработаны для изображения схем-алгоритмов и закреплены ГОСТ и международными стандартами.

На территории Российской Федерации действует единая система программной документации (ЕСПД), частью которой является Государственный стандарт — ГОСТ 19.701-90 «Схемы алгоритмов программ, данных и систем» [1]. Не смотря на то, что описанные в стандарте обозначения могут использоваться для изображения схем ресурсов системы, схем взаимодействия программ и т.п., в настоящей статье описана лишь разработка схем алгоритмов программ.

Рассматриваемый ГОСТ практически полностью соответствует международному стандарту ISO 5807:1985.

Содержание:

  1. Элементы блок-схем алгоритмов
  2. Примеры блок-схем
  3. Нужны ли блок-схемы? Альтернативы

Элементы блок-схем алгоритмов

Блок-схема представляет собой совокупность символов, соответствующих этапам работы алгоритма и соединяющих их линий. Пунктирная линия используется для соединения символа с комментарием. Сплошная линия отражает зависимости по управлению между символами и может снабжаться стрелкой. Стрелку можно не указывать при направлении дуги слева направо и сверху вниз. Согласно п. 4.2.4, линии должны подходить к символу слева, либо сверху, а исходить снизу, либо справа.

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

flowcharts_terminator
Терминатор начала и конца работы функции
Терминатором начинается и заканчивается любая функция. Тип возвращаемого значения и аргументов функции обычно указывается в комментариях к блоку терминатора.
flowcharts_data
Операции ввода и вывода данных
В ГОСТ определено множество символов ввода/вывода, например вывод на магнитные ленты, дисплеи и т.п. Если источник данных не принципиален, обычно используется символ параллелограмма. Подробности ввода/вывода могут быть указаны в комментариях.
flowcharts_process
Выполнение операций над данными
В блоке операций обычно размещают одно или несколько (ГОСТ не запрещает) операций присваивания, не требующих вызова внешних функций.
flowcharts_solution
Блок, иллюстрирующий ветвление алгоритма
Блок в виде ромба имеет один вход и несколько подписанных выходов. В случае, если блок имеет 2 выхода (соответствует оператору ветвления), на них подписывается результат сравнения — «да/нет». Если из блока выходит большее число линий (оператор выбора), внутри него записывается имя переменной, а на выходящих дугах — значения этой переменной.
flowcharts_procedure
Вызов внешней процедуры
Вызов внешних процедур и функций помещается в прямоугольник с дополнительными вертикальными линиями.
flowcharts_loop
Начало и конец цикла
Символы начала и конца цикла содержат имя и условие. Условие может отсутствовать в одном из символов пары. Расположение условия, определяет тип оператора, соответствующего символам на языке высокого уровня — оператор с предусловием (while) или постусловием (do … while).
flowcharts_preprocess
Подготовка данных
Символ «подготовка данных» в произвольной форме (в ГОСТ нет ни пояснений, ни примеров), задает входные значения. Используется обычно для задания циклов со счетчиком.
flowcharts_connector
Соединитель
В случае, если блок-схема не умещается на лист, используется символ соединителя, отражающий переход потока управления между листами. Символ может использоваться и на одном листе, если по каким-либо причинам тянуть линию не удобно.
flowcharts_comment
Комментарий
Комментарий может быть соединен как с одним блоком, так и группой. Группа блоков выделяется на схеме пунктирной линией.

Примеры блок-схем

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

Сортировка вставками

Массив в алгоритме сортировки вставками разделяется на отсортированную и еще не обработанную части. Изначально отсортированная часть состоит из одного элемента, и постепенно увеличивается.

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

insertsort_flowchart

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

В приведенной блок-схеме для организации цикла используется символ ветвления. В главном цикле (i < n) перебираются элементы необработанной части массива. Если все элементы обработаны — алгоритм завершает работу, в противном случае выполняется поиск позиции для вставки i-того элемента. Искомая позиция будет сохранена в переменной j в результате выполнения внутреннего цикла, осуществляющем сдвиг элементов до тех пор, пока не будет найден элемент, значение которого меньше i-того.

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

Сортировка пузырьком

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

bubblesort_flowchart

Блок-схема алгоритма сортировки пузырьком

На блок-схеме показано использование символов начала и конца цикла. Условие внешнего цикла (А) проверяется в конце (с постусловием), он работает до тех пор, пока переменная hasSwapped имеет значение true. Внутренний цикл использует предусловие для перебора пар сравниваемых элементов. В случае, если элементы расположены в неправильном порядке, выполняется их перестановка посредством вызова внешней процедуры (swap). Для того, чтобы было понятно назначение внешней процедуры и порядок следования ее аргументов, необходимо писать комментарии. В случае, если функция возвращает значение, комментарий может быть написан к символу терминатору конца.

Сортировка выбором

В сортировке выбором массив разделяется на отсортированную и необработанную части. Изначально отсортированная часть пустая, но постепенно она увеличивается. Алгоритм производит поиск минимального элемента необработанной части и меняет его местами с первым элементом той же части, после чего считается, что первый элемент обработан (отсортированная часть увеличивается).

selectsort_flowchart

Блок-схема сортировки выбором

На блок-схеме приведен пример использования блока «подготовка», а также показано, что в ряде случаев можно описывать алгоритм более «укрупнённо» (не вдаваясь в детали). К сортировке выбором не имеют отношения детали реализации поиска индекса минимального элемента массива, поэтому они могут быть описаны символом вызова внешней процедуры. Если блок-схема алгоритма внешней процедуры отсутствует, не помешает написать к символу вызова комментарий, исключением могут быть функции с говорящими названиями типа swap, sort, … .

На блоге можно найти другие примеры блок-схем:

  • блок-схема проверки правильности расстановки скобок арифметического выражения [2];
  • блок-схемы алгоритмов быстрой сортировки и сортировки слиянием [3].

Часть студентов традиционно пытается рисовать блок-схемы в Microsoft Word, но это оказывается сложно и не удобно. Например, в MS Word нет стандартного блока для терминатора начала и конца алгоритма (прямоугольник со скругленными краями, а не овал). Наиболее удобными, на мой взгляд, являются утилиты MS Visio и yEd [5], обе они позволяют гораздо больше, чем строить блок-схемы (например рисовать диаграммы UML), но первая является платной и работает только под Windows, вторая бесплатная и кроссплатфомренная. Все блок-схемы в этой статье выполнены с использованием yEd.

Частные конторы никакие блок-схемы не используют, в книжках по алгоритмам [6] вместо них применяют словесное описание (псевдокод) как более краткую форму. Возможно блок-схемы применяют на государственных предприятиях, которые должны оформлять документацию согласно требованиям ЕСПД, но есть сомнения — даже для регистрации программы в Государственном реестре программ для ЭВМ никаких блок-схем не требуется.

Тем не менее, рисовать блок-схемы заставляют школьников (примеры из учебников ГОСТ не соответствуют) — выносят вопросы на государственные экзамены (ГИА и ЕГЭ), студентов — перед защитой диплом сдается на нормоконтроль, где проверяется соответствие схем стандартам.

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

Появляются подозрения, что система образования прогнила и отстала лет на 20, однако аналогичная проблема наблюдается и за рубежом. Международный стандарт ISO 5807:1985 мало чем отличается от ГОСТ 19.701-90, более нового стандарта за рубежом нет. Там же производится множество программ для выполнения этих самых схем — Dia, MS Visio, yEd, …, а значит списывать их не собираются. Вместо блок-схем иногда применяют диаграммы деятельности UML [6], однако удобнее они оказываются, разве что при изображении параллельных алгоритмов.

Периодически поднимается вопрос о том, что ни блок-схемы, ни UML не нужны, да и документация тоже не нужна. Об этом твердят программисты, придерживающиеся методологии экстремального программирования (XP) [7], ходя даже в их кругу нет единого мнения.

В ряде случаев, программирование невозможно без рисования блок-схем, т.к. это один процесс — существуют визуальные языки программирования, такие как ДРАКОН [8], кроме того, блок-схемы используются для верификации алгоритмов (формального доказательства их корректности) методом индуктивных утверждений Флойда [9].

В общем, единого мнения нет. Очевидно, есть области, в которых без чего-то типа блок-схем обойтись нельзя, но более гибкой альтернативы нет. Для формальной верификации необходимо рисовать подробные блок-схемы, но для проектирования и документирования такие схемы не нужны — я считаю разумным утверждение экстремальных программистов о том, что нужно рисовать лишь те схемы, которые помогают в работе и не требуют больших усилий для поддержания в актуальном состоянии [10].

Список использованных источников:

  1. ГОСТ 19.701–90 (ИСО 5807–85) «Единая система программной документа­ции».
  2. Алгоритм. Свойства алгоритма \ https://pro-prof.com/archives/578
  3. Алгоритмы сортировки слиянием и быстрой сортировки \ https://pro-prof.com/archives/813
  4. yEd Graph Editor \ https://www.yworks.com/products/yed
  5. Книги: алгоритмы \ https://pro-prof.com/books-algorithms
  6. Рамбо Дж., Якобсон А., Буч Г. UML: специальный справочник. -СПб.: Питер, 2002. -656 с.
  7. Кент Бек Экстремальное программирование: разработка через тестирование – СПб.: Питер – 2003
  8. Визуальный язык ДРАКОН \ https://drakon.su/
  9. Шилов Н.В. Верификация шаблонов алгоритмов для метода отката и метода ветвей и границ. Моделирование и анализ информационных систем, ISSN 1818 – 1015, т.18, №4, 2011
  10. Брукс Ф., Мифический человеко — месяц или как создаются программные системы. СПб. Символ Плюс, 1999 — 304 с. ил.

Понравилась статья? Поделить с друзьями:
  • Близких нужно любить и заботиться где ошибка
  • Благодаря всеобщих усилий мы были спасены грамматические ошибки
  • Блок схема обработка ошибок
  • Близзард сообщить об ошибке
  • Благодаря болезни ошибка