主页
Top.Mail.Ru Yandeks.Metrika
论坛:“抢”;
当前存档:2002.07.29;
下载:[xml.tar.bz2];

向下

结构编程 - 什么东西? 找到类似的分支


MaximatorVeter   (2002-07-01 14:23) [0]

Зашел тут у нас небольшой спор на эту тему.

Я (более молодой) утверждаю:

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

А мой оппонент (человек лет 30-35) говорит:

Что до структурного программирования, то первый шаг в его развитии начинался именно с повышения удобочитаемости за счёт отступов, пробелов в тексте и т.п. Разбиение программы на набор процедур существовало, разумеется, и до того. Просто этот метод был взят на вооружение, как соответствующий идее это самого структурного программирования.

我们哪个人是对的?



VAleksey   (2002-07-01 14:31) [1]

Ну насколько мне помнятся все курсы по программированию то ты прав. Хотя ... память слабовата и теорию надо освежить :)).
PS
Ты прав 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]


> Igor Shevchenko©(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]

谢谢大家。

>瓦莱克西

Особое спасибо.



Anatoly Podgoretsky   (2002-07-01 15:22) [11]

Victor Shcherbakov©(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]

2Yury Zotov


> (тем более, что этих самых 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]


> Yuri Zotov©(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]


> Yuri Zotov©(02.07.02 00:53)
> > Но речь то идет о структурном программировании
> > имея в виду алгоритмические языки
>
> Ну вот, а Вы говорите "суть ясна". Выходит, не ясна все
>相同。

Не скорее это ВЫ меня не поняли.

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

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

Я же говорю об этой так называемой "методологии" ПРИМЕНИТЕЛЬНО, ПРИМЕНИТЕЛЬНО, ПРИМЕНИТЕЛЬНО к алгоритмическим языкам.

Не забываем на каком сайте мы находимся...



Страницы: 1 整个分支

论坛:“抢”;
当前存档:2002.07.29;
下载:[xml.tar.bz2];

楼上









内存:0.68 MB
时间:0.037 c
14-95522
阿纳托利shkodin
2002-07-02 20:42
2002.07.29
关于VisiBroker


14-95511
Mirkoorio
2002-07-01 18:39
2002.07.29
FAT32还是NTFS?


1-95418
最大
2002-07-15 10:20
2002.07.29
如何找出该文本已插入RichEdit ???


1-95401
巴尔科夫叶夫根尼
2002-07-16 11:12
2002.07.29
如何防止最大化和最小化窗口


3-95209
nitro313
2002-07-08 02:40
2002.07.29
人们,告诉我如何在删除时保留增量字段?





南非荷兰语 阿尔巴尼亚人 阿拉伯语 亚美尼亚 阿塞拜疆 巴斯克 白俄罗斯 保加利亚语 加泰罗尼亚 简体中文 中国(繁体) 克罗地亚 捷克 丹麦语 荷兰人 英语 爱沙尼亚语 菲律宾人 芬兰 法文
加利亚西语 格鲁吉亚语 德语 希腊语 海地克里奥尔语 希伯来语 印地语 匈牙利 北日耳曼语 印度尼西亚人 爱尔兰语 意大利语 日本性玩偶 韩语 拉脱维亚 立陶宛 马其顿 马来语 马耳他语 挪威语
波斯语 波兰语 葡萄牙语 罗马尼亚 俄语 塞尔维亚 斯洛伐克 斯洛文尼亚 西班牙语 斯瓦希里 瑞典语 泰国人 土耳其 乌克兰 乌尔都语 越南人 威尔士语 意第绪语 孟加拉 波斯尼亚
宿务 世界语 古吉拉特语 豪萨语 苗族 伊博 爪哇 卡纳达语 高棉 老挝 拉丁语 毛利 马拉 蒙古人 尼泊尔 旁遮普 索马里 泰米尔人 泰卢固语 约鲁巴语
祖鲁
英文 Французский Немецкий Итальянский Португальский 俄文 Испанский