Форум: "Потрепаться";
Текущий архив: 2002.07.29;
Скачать: [xml.tar.bz2];
ВнизСтруктурное программирование - что за штука? Найти похожие ветки
← →
MaximatorVeter (2002-07-01 14:23) [0]Зашел тут у нас небольшой спор на эту тему.
Я (более молодой) утверждаю:
Структурное программирование в первом приближении - разбиение программы на процедуры и отказ от использования оператора GOTO.
А мой оппонент (человек лет 30-35) говорит:
Что до структурного программирования, то первый шаг в его развитии начинался именно с повышения удобочитаемости за счёт отступов, пробелов в тексте и т.п. Разбиение программы на набор процедур существовало, разумеется, и до того. Просто этот метод был взят на вооружение, как соответствующий идее это самого структурного программирования.
Кто из нас прав?
← →
VAleksey (2002-07-01 14:31) [1]Ну насколько мне помнятся все курсы по программированию то ты прав. Хотя ... память слабовата и теорию надо освежить :)).
ЗЫ
Ты прав 100%.
← →
Виктор Щербаков (2002-07-01 14:34) [2]Одно дело структура записи программы (это я про отступы), и другое - структура самой программы.
Для восприятия программы человеком важно и то и другое, для машины неважно вообще. Она делает то, что написали.
А что касается терминологии, то в термин "структурное программирование" вкладывается смысл структурирования алгоритма, а не его записи. Так что выходит ты прав.
← →
Игорь Шевченко (2002-07-01 14:42) [3]Сдается мне, что оба неправы...
← →
VAleksey (2002-07-01 14:44) [4]Освежил память -)). То что ты говоришь это процедурное программирование.
← →
MaximatorVeter (2002-07-01 14:45) [5]
> Игорь Шевченко © (01.07.02 14:42)
> Сдается мне, что оба неправы...
А аргументы?
← →
MaximatorVeter (2002-07-01 14:46) [6]
> VAleksey © (01.07.02 14:44)
> Освежил память -)). То что ты говоришь это процедурное программирование.
Что же тогда структурное?
← →
VAleksey (2002-07-01 14:47) [7]http://www.stu.ru/inform/glaves2/glava18/gl_18_2.html#structur_progr
Структурное программирование основано на модульной структуре программного продукта и типовых управляющих структурах алгоритмов обработки данных различных программных модулей
← →
VAleksey (2002-07-01 14:53) [8]можно и так
http://manuilov.narod.ru/structura/2_3.htm
Структурное кодирование (программирование) - это метод кодирования (программирования), предусматривающий создание понятных, простых и удобочитаемых программных модулей и программных комплексов на требуемом языке программирования. Для кодирования программных модулей используются унифицированные (базовые) структуры.
Программные комплексы и программные модули, закодированные в соответствии с перечисленными правилами структурного программирования, называются структурированными.
← →
Виктор Щербаков (2002-07-01 14:56) [9]Однако MaximatorVeter © всё же оказался намного ближе к истине, если учитывать оговорку "в первом приближении".
Кстати, фанатам структурного программирования нельзя использовать Exit для выхода из функций. Потому что:
"В любой типовой структуре блок, кроме условного, имеет только один вход и выход"
← →
MaximatorVeter (2002-07-01 15:04) [10]Всем спасибо.
> VAleksey
Особое спасибо.
← →
Anatoly Podgoretsky (2002-07-01 15:22) [11]Виктор Щербаков © (01.07.02 14:56)
Exit не означает выход из середины, а означает уйти, при том с соблюдений правил хорошего тона, через стандартный выход :-)
← →
Виктор Щербаков (2002-07-01 15:52) [12]Anatoly Podgoretsky © (01.07.02 15:22)
Exit эквивалентен goto на метку, стоящую непосредственно перед end функции. А про goto здесь уже много "хорошего" сказано.
← →
Anatoly Podgoretsky (2002-07-01 16:12) [13]ничего хорошего про goto не скажу, позволяет выйти за пределы блока, в то же время exit соблюдает правила хорошего тона
← →
Юрий Зотов (2002-07-01 17:40) [14]Ребята, что же вы так упрощаете-то?
Структурное программирование - это не практическое программирование, а нечто вроде методологии. В каком-то смысле, наверное, даже математической дисциплины.
Поэтому его НИ В КОЕМ СЛУЧАЕ не следует понимать, как простое разбиение программы на некие модули и подпрограммы. И, тем более, не следует смешивать с форматированием текста, отказом от Exit, GoTo и т.д. (тем более, что этих самых GoTo в виде разных "джампов" компилятор все равно поналепит целое море).
Структурное программирование - это один из методов построения АЛГОРИТМА решения задачи и одновременно СТРУКТУРЫ этого алгоритма. Например, оно рассматривает нисходящее и восходящее программирование (некие аналоги анализа/синтеза - методики решения задачи путем последовательного вычленения из нее подзадач вплоть до уже известных и, наоборот, "сборки" конечного алгоритма из уже известных). Понятно, что ни с каким практическим программированием, языками и компьютером все это это может быть вообще никак не связано, поскольку найденный в итоге алгоритм решения задачи можно записать и кучей других способов.
А "разбиение программы на процедуры" существовало и правда задолго до появления этого термина. И действительно было взято на вооружение при РЕАЛИЗАЦИИ этой технологии, как наиболее близко соответствующее его идее.
А отступы в тексте и GoTo здесь вообще ни при чем, хоть используете Вы их, хоть нет. Это немного из другой оперы, хотя и похожей.
← →
blackman (2002-07-01 17:50) [15]>MaximatorVeter
Был такой Clipper - соответствовал стандартам структурного программирования и тихо скончался...
← →
kull (2002-07-01 18:10) [16]2Юрий Зотов
> (тем более, что этих самых GoTo в виде разных "джампов"
> компилятор все равно поналепит целое море).
На то и существуют языки более высокого уровня, чтоб заботу о разных "джампах" оставить для компилятора. Поэтому использование Goto попахивает ассемблером.
> , "сборки" конечного алгоритма из уже известных
А каким еще способом кроме вызова готовых функций можно использовать уже известные алгоритмы?
Методом Copy-Paste что ли?
Задача разбитая на логические блоки, реализуется аналогами этих блоков уже применительно к языку программирования.
Вот и получается что эти блоки не что иное как: конструкции, if..then..else, case, while, for, вызовы функций, а так же отдельные модули и т.п.
Это и есть структурное программирование.
← →
Дремучий (2002-07-01 18:39) [17]а почему никто не вспомнил SQL?
← →
Viewer (2002-07-01 22:24) [18]Если очень коротко:
1.Структурное программирование (СП)(проектирование) - это действительно методология проектирования, ставшая уже дисциплиной.
( см. Юрий Зотов © (01.07.02 17:40))
2. СП основано на методах нисходящего проектирования, модульности и типовых управляющих структурах.
3.Метод нисходящего проектирования основывается на методологии построения системы "сверху-вниз", когда общая задача(функция) на основе известных методах декомпозиции, разлагается на простые подзадачи (подфункции) и в итоге строится общая иерархическая модель решения задачи (выполнения функции).
4. Модульность основана на представлении (понятии) модуля, как логически взаимосвязанной совокупности функциональных элементов,
оформленных в виде отдельного программного модуля.
Модульност перекликается с методами нисходящего проектирования.
И если, опят же коротко - нижележащий модуль вызывается вышележащим и завершив выполнение, передает управления в верхний (вызвавший) модуль; принятие "основных" решений выносится на максимально высокий уровень; для реализации одной и той же функции в разных местах алгоритма, содается один модуль;
модуль имеет один вход и один выход.
5. Управляющие структуры состоят из фиксированного множества
базовых конструкций к которым относятся: следование, ветвление, цикл. (в разных практических языках программирования число базовых конструкций варьируется)
6. И еще одна "малоизвестная" деталь СП: документация должна создаваться одновременно с программированием и ее важной частью являются комментарии в программе.
Идеология СП создавалась в IBM (70-е) в эпоху процедурного подхода к программированию.
Наступление ООП было неотвратимым, т.к. позволило устранить главную проблему процедурности - использование переключателей для обработки данных, когда любое изменение данных вело к изменению их обработчиков. Вместо этого были использованы классы, наследование и встраивание обработчиков данных в объекты, чем мы с Вами сегодня и пользуемся с удовольствием.
← →
Юрий Зотов (2002-07-01 23:34) [19]> А каким еще способом кроме вызова готовых функций
> можно использовать уже известные алгоритмы?
Увы, Вы не поняли сути. Привожу пример.
В начальных классах щколы мы все решали задачки по арифметике и нас учили разбивать решение на отдельные действия. Помните - "эта задача решается в три действия"?
Так вот это и есть использование уже известных алгоритмов ("сложить", "разделить" и т.д.) для построения еще неизвестного алгоритма решения ВСЕЙ задачи. Структурное программирование в чистейшем виде.
И мы делали это без всяких языков, операторов, функций и компьютера. Просто на бумаге.
Более того, если бы нас интересовал только алгоритм, а не сам ответ, то эти действия мы могли бы записывать обычными русскими фразами. И нам не нужны были бы ни числа, ни таблица умножения.
← →
kull (2002-07-01 23:49) [20]
> Юрий Зотов © (01.07.02 23:34)
Суть ясна.
К чему тогда слова о "джампах"?
Но речь то идет о структурном программировании имея в виду алгоритмические языки (Pascal например).
А то можно и наследование определить применительно к биологическим особям.
← →
Юрий Зотов (2002-07-02 00:53) [21]> Но речь то идет о структурном программировании
> имея в виду алгоритмические языки
Ну вот, а Вы говорите "суть ясна". Выходит, не ясна все же.
Речь идет о структурном программировании. А оно не имеет в виду НМКАКИХ языков. Оно имеет в виду методологию решения задач. И все. Например, задачи о наиболее выгодном обмене квартиры. Или любой другой задачи. Никак не связанной ни с какими языками и вообще ни с какими компьютерами.
← →
kaif (2002-07-02 02:01) [22]2 kull © (01.07.02 23:49)
Кстати, биологические виды не поддерживают множественного наследования. Нельзя скрестить крокодила с курицей.
:)
Структурное программирование это когда вместо классического изображения алгоритма используют квадратики и связи. Есть принцип их обхода - связи не должны пересекаться. Это похоже на дерево, по которому ползает букашка. В ветку можно залезать, но с ветки на ветку нельзя прыгать. Такое изображение позволяет моделировать программы на различном уровне подробности. Например, отладить крупную схему из нескольких черных ящиков, а потом уточнять далее сами эти ящики.
Целью было упростить объединение усилий множества программистов.
Однако это не спасло. Пришлось изобретать ООП.
В общем, автор вопроса прав. Отказ от GOTO является самым важным моментом. А exit не нарушает главного принципа - не допустить пересечения связей, поэтому exit приемлем.
Все это ИМХО.
← →
Леша (2002-07-02 07:18) [23]>kaif
У почти у всех развитых живых организмов два предка. При этом инфромация заложенная в генах наследуюися от обоих, и она неидентична. Да, а вот дальше природа не пошла. А что до крокодила с курицей это вопрос времени.
← →
VAleksey (2002-07-02 08:48) [24]
>
> kaif © (02.07.02 02:01)
Я где то встречал пример про варенье :) предки которого - сахар и ягода :).
← →
cyborg (2002-07-02 10:35) [25]>>kaif © (02.07.02 02:01)
>>Кстати, биологические виды не поддерживают множественного
>>наследования. Нельзя скрестить крокодила с курицей.
Ну это ошибочно! Ишак + Лошадь = Мул.
Если не ошибаюсь :-).
← →
kull (2002-07-02 10:59) [26]
> Юрий Зотов © (02.07.02 00:53)
> > Но речь то идет о структурном программировании
> > имея в виду алгоритмические языки
>
> Ну вот, а Вы говорите "суть ясна". Выходит, не ясна все
> же.
Не скорее это ВЫ меня не поняли.
То что Вы делаете акцент на том, что алгоритмические языки здесь не причем это я уяснил. В это Вы правы.(Ну раз меня так хотят убедить в том что мне не ясна суть дела, пусть будет так.)
Но делать упор на отсутствие применения этой "методологии решения задач" к языкам программирования не надо.
Я же говорю об этой так называемой "методологии" ПРИМЕНИТЕЛЬНО, ПРИМЕНИТЕЛЬНО, ПРИМЕНИТЕЛЬНО к алгоритмическим языкам.
Не забываем на каком сайте мы находимся...
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2002.07.29;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.006 c