IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V < 1 2  
 Ответить  Открыть новую тему 
> Выполнение программы простой структуры
сообщение
Сообщение #21


Гость






Цитата(volvo @ 30.05.2010 15:34) *

Научитесь сначала читать код, потом возьметесь за критику. Где 3 выхода? Я вижу только один выход из подпрограммы. Перед последним End-ом. Все остальное - не более чем запоминание результата, который функция может вернуть (а может и НЕ вернуть, как повезет).

Кстати, ссылку на "правила структурирования программ" можно получить? (с указанием автора, желательно - не Васи Пупкина)... И заодно объяснение, чем подобная функция нарушает правила структурирования... Иначе - все, что я вижу в этом посте - это поднятие старой темы, причем необоснованное. Если ответа не последует в течении 12 часов - пост №18 будет просто удален. Как и все последующие.


1.Выход из функции все должен находится перед закрывающем операндом.(Примеры: MFC)
2.Любую книгу возьми про стили программирования.
3.Поэтому желательно писать так (если вам конечно не жалко памяти, если жалко памяти пишите на asm'е):

function Root3(e: extended): extended;
integer tmp;
begin
if (e = 0) then
tmp := 0;
else if (e > 0) then
tmp := exp(1/3 * ln(e));
else
tmp := -exp(1/3 * ln(-e));

Root3 := tmp;
end;

 К началу страницы 
+ Ответить 
сообщение
Сообщение #22


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Гость @ 30.05.2010 17:13) *

1.Выход из функции все должен находится перед закрывающем операндом.(Примеры: MFC)
2.Любую книгу возьми про стили программирования.
3.Поэтому желательно писать так (если вам конечно не жалко памяти, если жалко памяти пишите на asm'е):

function Root3(e: extended): extended;
integer tmp;
begin
if (e = 0) then
tmp := 0;
else if (e > 0) then
tmp := exp(1/3 * ln(e));
else
tmp := -exp(1/3 * ln(-e));

Root3 := tmp;
end;



lol.gif Улет, просто улет!! lol.gif
volvo, спасибо, что оставил мне удовольствие ответить этому олуху.. )) На этот раз, в соответствии с тоном, взятым Гостем, отброшу весь этикет.

Гость, ты бы потрудился сначала узнать необходимый минимум по предмету перед тем, как дискутировать с профессионалами, а? Или уж по САМОМУ минимуму - приводил бы корректный (компилирующийся) код..
"Три выхода"! три кварка! три карты.. три апельсина! )) смех, да и только..

Совет тебе: урой своего учителя. Ну, или хотя бы не прогуливай занатия..

кэшмарт.. три выхода.. "желательно писать так".. "если вам конечно не жалко памяти".. держите меня трое.. нет, лучше семеро ))..

Гость, не обессудь, линк на твое сообщение отправляется в раздел "Юмор", в тему "Смешные случаи на форуме" или что-то в этом роде smile.gif.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #23


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Да тут уже на форуме говорили, что при изучении Паскаля детям принудительно не дают в середине кода присваивать значение результату функции, чтобы им легче было переходить на другие языки, где такого нету. (Может это и правильно, чтобы детей лучше обточить под потребности индустрии...) Вот и рождаются такие перлы, да и отступы какие-то больно большие, не паскальные, да и способ объявления переменной.

Добавлено через 1 мин.
Кстати, а зачем условие в блоке if заключать в скобчки?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #24


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


Цитата
1.Выход из функции все должен находится перед закрывающем операндом.

Зря смеётесь, примерно так часто и делается, просто по общепринятым правилам некоторых сообществ нельзя говорить о том что реально применяется на практике. По ходу человек готовится писать на чистом Си, без ООП, а там как раз в сложных ситуациях применяется или бреак или гото. Причём код с бреак читается намного хуже чем с гото. Подставьте в пример кода гото и он заработает на все сто, за исключением ошибок в синтаксисе. Достаточно посмотреть примеры опенсорсных сишных программ чтобы уяснить какие методы можно применять в реальных программах а какие в показательных учебных.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #25


Гость






Цитата
По ходу человек готовится писать на чистом Си, без ООП
Тогда пусть этот челвек отвечает в разделе "Другие языки", а не лезет в Паскаль, коли не знает того, что Паскаль позволяет использовать имя функции (как LValue) для промежуточного хранения результата функции (либо до ее окончания, либо до Exit-а)

Цитата
Причём код с бреак читается намного хуже чем с гото.
За код с goto у нас не задумываясь, и не смотря на любые прежние заслуги, увольняют без выходного пособия. Точка.

Цитата
Достаточно посмотреть примеры опенсорсных сишных программ чтобы уяснить какие методы можно применять в реальных программах а какие в показательных учебных.
Опенсорс - это "я так делаю, потому что моя левая пятка так захотела, или мне так проще, и плевать на мнение остальных". Не далее, как сегодня я уже видел подобный хит: Кнопки WinAPI (а потом опять будут разговоры, что программа не работает, и опять во всем будут винить ОС).

Опенсорс - помойка, и очень часто - пример того, как писать НЕ надо...

"Теперь по Борщову" (С)
Цитата
1.Выход из функции все должен находится перед закрывающем операндом.(Примеры: MFC)
2.Любую книгу возьми про стили программирования.
3.Поэтому желательно писать так (если вам конечно не жалко памяти, если жалко памяти пишите на asm'е):
  1. MFC - это не Паскаль, посему примером для меня быть не может в данном случае. Язык не тот. О разнице между return и <имя_функции> := я уже написал выше. Си нервно курит в стороне в данном случае...
  2. Я же просил ссылку, а не абстрактного "Васю Пупкина", даже если его зовут Herb Sutter. Я все еще жду...
  3. Мне как раз памяти жалко, вот я временную переменную не описал, в отличие от... Не нужно это. А на чем писать - это я как-нибудь сам разберусь, без посторонней помощи.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #26


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> За код с goto у нас не задумываясь, и не смотря на любые прежние заслуги, увольняют без выходного пособия. Точка.

Это тоже фанатизм какой-то.
Что, считается лучше так?

repeat
...
if oops1 then break;
...
if oops2 then break;
...
break;
until false;


Или так?

try
...
if oops1 then raise e;
...
if oops2 then raise e;
...
except
on e: MyCoolException do begin
end;


Или так?

procedure MyCoolProc;
begin
...
if oops1 then Exit;
...
if oops2 then Exit;
...
end;

...
MyCoolProc


Чем это лучше гото? Гото Папа Римский запретил, поэтому его нельзя использовать?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #27


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Цитата
За код с goto у нас не задумываясь, и не смотря на любые прежние заслуги, увольняют без выходного пособия.


lol.gif Извиняюсь за оффтоп, не удержался:

Цитата
-Вы уволены!
-?? за что??
-А на 523 строчке?


Сообщение отредактировано: Unconnected -


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #28


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


Цитата
За код с goto у нас не задумываясь, и не смотря на любые прежние заслуги, увольняют без выходного пособия. Точка.

Тогда никогда не смотри HD рипы закоденные x264, там goto хватает. Мимоходом лишил кучу народа радости. В блоге какого-то программиста прочитал высказывание http://love5an.livejournal.com/tag/programming второе снизу.

Цитата
Опенсорс - помойка, и очень часто - пример того, как писать НЕ надо...

А архитектура виндовса - "грешно смеяться над убогими", столько раз переписывается сначала а получается всё тоже самое, только жрёт больше и нужную кнопку искать дольше. Если бы опенсорсный код был однозначно плохой, при минимальном финансировании софт на нём написанный вымер бы сам по себе, но он эволюционирует.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #29


Гость






Цитата
Что, считается лучше так?
Я не пишу на Паскале, и на Дельфи тоже не пишу. Так что во-первых, в языке существуют другие структуры, позволяющие в подавляющем большинстве случаев обойтись без goto (в смысле, в подавляющем большинстве случаев, когда сторонники "лапшеобразного кода" рекомендуют использовать goto: например, немедленный выход из многократно вложенного цикла), а во-вторых, ни одна программа, тестирующая синтаксис проекта, не пропустит его, пока там есть по крайней мере один оператор goto. Какой на фиг goto, если программа-тестер исходного текста выдает предупреждение
  • когда перед знаком присваивания (или после него) пропущен пробел;
  • когда после знака, обозначающего комментарий, до начала самогО закомментированного текста стоит меньше или больше двух пробелов;
  • когда имя переменной описано в одном регистре, а использовано - в другом (хотя язык - не case-sensitive, как Си)
?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #30


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


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

Короче, если кто-то еще считает, что Гостю мало досталось - милости прошу высказываться. Ежели про GOTO - then goto "соответствующая тема" (была, точно совершенно была, ищите сами, мне в лом)).

P.S.
Ну, чего прикопались? Гость уже целых две недели как начал изучать программирование на Си - конечно его потянуло поучить, как надо писать на Паскале! Помилуйте, как же без этого? а вдруг кто-то так и не узнает Истину?? А вы ему - goto, goto.. ))


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V < 1 2
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 19:15
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name