[МУЗЫКА] [МУЗЫКА] Теперь рассмотрим внешнюю спецификацию. Внешняя спецификация – это то, что пользователь видит на экране при работе с программой. Первым делом мы с вами выводим сообщение о том, какую задачу мы хотим решить. В данном случае мы решаем линейное уравнение. Затем мы с вами запрашиваем у пользователя, какие данные нам нужны. Сначала выводится сообщение о том, что нам нужны коэффициенты a и b, и затем пользователь вводит эти данные. Обратите внимание, что <a> и <b> заключены в одинарные угловые скобки. Это означает, что эти данные будет вводить пользователь. Теперь посмотрите внимательно: наш текст заключен в некую рамку. Эта рамка – это прообраз экрана. Здесь показывается, что вот то, что заключено в рамку, будет у нас показано на экране. Дальше у нас с вами идут различные варианты результата. Первый вариант, это когда у нас с вами a ≠ 0. Мы тогда выводим сообщение о том, что у нас корень уравнения и выводим значение этого корня. При этом обратите внимание опять на угловые скобки. Вот двойные угловые скобки показывают нам, что этот результат выведет компьютер. И, кроме того, мы видим, что у нас есть еще фигурная скобка, которая у нас охватывает некоторую часть нашего текста. Эта скобка показывает, что при этом условии будет выводиться только вот этот вот фрагмент. Там, где скобка заканчивается, там действие нашего условия завершено. Теперь рассматриваем остальные варианты. Следующий вариант, когда у нас оба коэффициента равны нулю, тогда у нас с вами результатом является сообщение, что корень будет любое число. И третий вариант, это у нас с вами, когда a = 0, а b ≠ 0, тогда результат наш – это сообщение о том, что нет корней. Итак, перед нами внешняя спецификация, очень интересный результат. Мы с вами видим, как будет работать наша будущая программа, хотя мы с вами не написали еще ни саму программу, и даже не написали алгоритм. Но, тем не менее, мы видим все варианты, которые могут происходить у нас в диалоге пользователя с компьютером. Во внешней спецификации у нас есть некоторые особенности, которые мы должны будем с вами учесть при ее составлении. Во-первых, когда мы с вами вводим исходные данные, необходимо во всех случаях пользователю рассказывать, сообщать о том, какие это данные и для чего они нужны. Например здесь мы сообщаем о том, что нам нужны коэффициенты линейного уравнения. Кроме того, когда мы с вами выводим результат, тоже важно, чтобы пользователь понимал, что именно за результат, то есть вывод результата должен сопровождаться сообщениями. И, кроме того, при вводе данных, если у них есть размерность, ну, например, пусть это угол. Угол у нас может с вами измеряться, как известно, в градусах и в радианах. Ну или скорость – скорость может измеряться, допустим, в километрах в час, в метрах в секунду. Поэтому, для того чтобы пользователь точно понимал как именно ему данные вести, нужно указывать эту размерность. Например: введите скорость в км/ч. Рассмотрим и запомним обозначения, которые у нас с вами используются во внешней спецификации. Некоторые из них в нашем примере были, а некоторые нет. Итак, обозначения во внешней спецификации у нас с вами следующие: одинарные угловые скобки показывают нам, что данные будут вводиться пользователем. Далее у нас с вами есть двойные угловые скобки – это означает вывод значений переменных, то есть эти значения нам выведет компьютер. Дальше у нас фигурная скобка, она показывает связь условия и тех действий, которые будут выполняться при этом условии. И, наконец, двойные фигурные скобки и за ними звездочка – обозначают повторение действий. Такое обозначение у нас с вами будет встречаться в дальнейшем. Теперь рассмотрим запись алгоритма решения нашей задачи на псевдокоде. Псевдокод – это специальный язык, который предназначен для записи алгоритмов. Мы с вами будем рассматривать русскоязычный вариант псевдокода и продолжаем рассматривать алгоритм решения линейного уравнения. Итак, наш алгоритм начинается со слова ключевого «алг» – это сокращение от «алгоритм». Мы это слово всегда подчеркиваем и в кавычках пишем название алгоритма. Затем у нас идет ключевое слово «нач» («начало»), которое мы тоже подчеркиваем, и дальше мы с вами начинаем записывать действия, которые будут в алгоритме, делая некоторый маленький отступ. Это сделано для того, чтобы у нас с вами была четче видна структура алгоритма. Дальше, в соответствии с тем, что было написано во внешней спецификации, мы с вами выводим сообщение о том, какую задачу мы с вами решаем, затем мы подсказываем пользователю, какие именно данные нужно нам ввести и вводим их. После этого начинаем рассматривать все случаи, которые были перечислены у нас с вами в методе решения задачи. Первый случай, когда мы с вами можем применит формулу. При a ≠ 0 мы с вами вычисляем корень и выводим полученный результат. Теперь мы с вами рассматриваем два остальных случая. Слово «иначе» обозначает, что a у нас уже равно 0 и дальнейшие наши действия зависят от b. При b = 0 мы выводим сообщение о том, что корень есть любое число, а в противном случае мы с вами выводим сообщение о том, что нет корней. Затем все наши условные конструкции закрываются, Каждая из них закрывается словом «все», причем первой закрывается вложенная, которая рассматривает, какое у нас b. И наш алгоритм завершается ключевым словом «кон» («конец»). Кроме того, мы с вами видим, что внизу нашего слайда некоторый рисунок. Этот рисунок показывает нам, какого типа наши данные. И a, и b, и x у нас с вами вещественного типа, то есть, иными словами говоря, это числа, которые могут иметь дробную часть. Теперь рассмотрим другой способ записи алгоритма – в виде блок-схемы. Блок-схема у нас с вами – это более ранний способ записи алгоритмов по отношению к псевдокоду. Наша блок-схема для той же задачи будет выглядеть так: у нас есть два овальных блока – это начало и конец, начало и конец алгоритма. Затем у нас с вами следует блок в виде параллелограмма для ввода данных, для ввода значений a и b. Дальше у нас с вами в ромбовидном блоке проверяется какое у нас a. При a ≠ 0 мы применяем нашу формулу. Блок у нас здесь в данном случае прямоугольной формы, и опять у нас с вами блок для вывода значения полученного x. Теперь мы рассматриваем противоположную ветвь. При a у нас равном 0 опять происходит анализ, какое у нас с вами b. И после этого выводятся соответствующие сообщения. И все стрелки обязательно ведут к концу. Теперь можем рассмотреть еще третий способ записи алгоритма. Это так называемая диаграмма Нейсси-Шнейдермана. Итак, в этом виде наш алгоритм выглядит так: первый блок у нас изображает ввод, затем у нас прямоугольник разделен на три части. Две нижние показывают условие, а средняя показывает какое именно условие у нас с вами выполняется. При истинном условии, то есть при a ≠ 0 мы идем вниз в соответствующий столбец, вычисляем значение x и выводим наш результат. И дальше у нас с вами в левой части идут опять два блока, которые выполняться будут при соответствующих условиях. Итак, мы с вами рассмотрели три способа записи алгоритмов. Теперь давайте попробуем сравнить, а какой из них чем отличается? Какой из них лучше, а какой из них хуже? И давайте попробуем проанализировать. Итак, сравним различные способы записи алгоритмов. Самый компактный способ из трех приведенных – это блок-схема. Диаграмма Нейсси-Шнейдермана – она тоже достаточно компактна. Далее, если мы рассмотрим наши алгоритмы с точки зрения наглядности, попытаемся их сравнить, то понятно, что у нас с вами блок-схема будет наглядной, но, правда, для небольших задач. Если мы с вами рассмотрим большую задачу, то тогда это преимущество может теряться. Особенно, если эта задача не разделена на отдельные блоки. Теперь мы с вами можем сказать, что блок-схема, конечно, хороша и наглядна, но она позволяет записать алгоритм так, что он не будет структурным. То есть при использовании блок-схем можно получить неструктурный алгоритм. И теперь вернемся к нашему псевдокоду. Наш псевдокод, он достаточно компактен, хотя, конечно, и длиннее, чем блок-схема. И достаточно нагляден. Но основное преимущество нашего псевдо-кода состоит в том, что он наиболее близок к тому, что мы получим, когда запишем программу на языке программирования. То есть, его наиболее удобно кодировать. Так вот, благодаря этому преимуществу, псевдокод является наиболее распространенным способом записи алгоритмов и мы с вами за это преимущество выберем его как единственный способ, который мы будем использовать в нашем курсе при записи алгоритмов. [МУЗЫКА] [МУЗЫКА]