Форум: "Прочее";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
ВнизСишные циклы FOR в Паскаль не переводятся? Найти похожие ветки
← →
Anatoly Podgoretsky © (2006-12-18 13:58) [80]> Думкин (18.12.2006 13:34:16) [76]
Нормально получается, я твое сообщение видел.
Кашу маслом не испортишь, ты в одном контексте, я в другом, но мельница вертится.
← →
Anatoly Podgoretsky © (2006-12-18 13:59) [81]> J_f_S (18.12.2006 13:45:17) [77]
Красиво излагаешь :-)
← →
J_f_S (2006-12-18 14:00) [82]Еще могу :-)
Для каких задач используются циклы?
1. перебор какого-либо множества
Если если множество - линейный вектор, (e.g. массив), с исключительно целочисленными индексами, то это только частный случай. Допустим, сейчас я связан с одним ГИС проектом, и у меня в программе хранится различная информация - точки, грани, полигоны, страны и .т.д - хранятся в различных множествах, (контейнерах), причем прямой индексации они могут и не иметь, в роли индексов могут быть обьекты (и даже списки обьектов), но суть одна - это упорядоченное множество, которое нужно перебрать, соответсвенно, используя связку for + iterators - перебор столь нетривиальной по меркам паскаля задачи прост и нагляден.
2. последовательное изменение некой переменной.
Опять же, а почему переменная - не обьект?
← →
clickmaker © (2006-12-18 14:03) [83]
> for + iterators - перебор столь нетривиальной по меркам
> паскаля задачи прост и нагляден
iterator - не языковая конструкция. Их вполне можно и в паскале писать
← →
Anatoly Podgoretsky © (2006-12-18 14:03) [84]> J_f_S (18.12.2006 14:00:22) [82]
Частности и варианты записи.
А циклов все равно как минимум три, с перечислением, с предусловием и с постусловием. Ну и плюс беспоконечный, без условий.
← →
J_f_S (2006-12-18 14:11) [85]
> clickmaker © (18.12.06 14:03) [83]
>
>
> > for + iterators - перебор столь нетривиальной по меркам
>
> > паскаля задачи прост и нагляден
>
> iterator - не языковая конструкция. Их вполне можно и в
> паскале писать
STL - стандартизована как подмножество языка в каком-то девяносто - лохматом году (лень мне искать :-(). Соответсвенно, каждый современный (выпущенный за последние десять лет) компилятор обладает поддержкой стандартной библиотеки шаблонов.
> Anatoly Podgoretsky © (18.
> А циклов все равно как минимум три, с перечислением, с предусловием
> и с постусловием. Ну и плюс беспоконечный, без условий.
>
Тут спорить грешно. Но я, собственно, ничего против и не говорил.
← →
Игорь Шевченко © (2006-12-18 14:16) [86]Думкин © (18.12.06 13:57) [79]
> То есть записью.
А для меня запись, знаешь ли, тоже имеет значение. Чем меньше строчек кода, тем код легче воспринимается, при условии, что строчки грамотные
← →
Думкин © (2006-12-18 14:18) [87]
> Игорь Шевченко © (18.12.06 14:16) [86]
С религией спорить трудно. %) Не буду.
← →
Anatoly Podgoretsky © (2006-12-18 14:22) [88]> Игорь Шевченко (18.12.2006 14:16:26) [86]
Помнится тут приводили строчки из СИ и Паскаля, строчек минимум - одна строка, красота неописуемая.
← →
Eraser © (2006-12-18 14:59) [89]> J_f_S
тут уже Думкин и Anatoly Podgoretsky по десят раз повторили, что циклы for в делфи и в C реализованы по-разному, разная философия у этих циклов.
Делфевский цикл может оказаться НАМНОГО быстрее, особенно если работать с объектом, у которого значение, к примеру, свойства count требует значительных вычислительных затрат, что вполне может встретится в реальном проекте. Обойти это можно только добавив доп. переменную.
что касается всяких экзотических вариантов цикла for типа как в [57], часто приходится ими пользоваться.
думаю если проанализировать код большенства проектов на C, выяснится, что подавляющее большенсто циклов - самый примитивный вариант for(int i =0; i < 10; i++), т.е. обычный паскалевский for..to.
← →
Eraser © (2006-12-18 15:00) [90]> часто приходится ими пользоваться.
это вопрос :)
← →
iZEN © (2006-12-18 15:00) [91]Так давайте же закроем тему с итоговым ответом на поставленный вопрос.
Сишные циклы FOR в Паскаль не не переводятся, но перевод сопряжон с пониманием семантики оператора FOR в этих языках и умением вложить в прокрустово ложе Паскалевского цикла FOR эту трепетную лань — Сишный оператор for. :)
← →
Anatoly Podgoretsky © (2006-12-18 15:03) [92]> iZEN (18.12.2006 15:00:31) [91]
Все переводится туда и обратно, просто слова разные.
← →
vidiv © (2006-12-18 17:53) [93]
> Anatoly Podgoretsky © (18.12.06 13:27) [72]
>
> Теперь замени i<10 на что ни будь более серьезное, наприме
> на функцию, а еще лучше на List.Count и особенно сделай
> в цикле, что бы этот Count увеличивался и тогда посмотрим,
> что будет.
Можешь это в новичках советовать. Как заменить i<10 на чтонибудь серьезное я знаю, не хуже тебя!
> Думкин © (18.12.06 14:18) [87]
> С религией спорить трудно. %) Не буду.
А, Игорь Шевченко - бог или жрец ??? :))
> Eraser © (18.12.06 14:59) [89]
>
> тут уже Думкин и Anatoly Podgoretsky по десят раз повторили,
> что циклы for в делфи и в C реализованы по-разному, разная
> философия у этих циклов.
не философия, если уж на то пошло, а логика.
> Делфевский цикл может оказаться НАМНОГО быстрее, особенно
чушь :(
> если работать с объектом, у которого значение, к примеру,
> свойства count требует значительных вычислительных затрат,
> что вполне может встретится в реальном проекте. Обойти
> это можно только добавив доп. переменную.
Это кем надо быть, чтобы в реальном проекте не учитывать примерную скорость вычисления Count.
В крайнем случае можно написать:
for i:=pred(Obj.Count) downto 0 do - тогда гораздо нагляднее будет видно, что Count будет вычислен только раз
← →
vidiv © (2006-12-18 17:54) [94]блин напутал я с < i > =)
← →
Anatoly Podgoretsky © (2006-12-18 17:58) [95]> vidiv (18.12.2006 17:53:33) [93]
> заменить i<10 на чтонибудь серьезное я знаю, не хуже тебя!
Очень заметно.
← →
vidiv © (2006-12-18 18:00) [96]
> Anatoly Podgoretsky © (18.12.06 17:58) [95]
>
> Очень заметно.
Конечно, у тебя же телепатор есть :)
← →
Anatoly Podgoretsky © (2006-12-18 18:05) [97]> vidiv (18.12.2006 18:00:36) [96]
У меня есть глаза, достаточно посмотреть твои темы, практически все они оказываются в начинающих, к сожалению ниже конференции у нас нет.
← →
vidiv © (2006-12-18 18:07) [98]
> Anatoly Podgoretsky © (18.12.06 18:05) [97]
> У меня есть глаза, достаточно посмотреть твои темы, практически
> все они оказываются в начинающих, к сожалению ниже конференции
> у нас нет.
Мы видим только то что хотим видеть ;)
ЗЫ. я достаточно редко задаю вопросы и тем не менее обычно они остаются без ответа, так что...
← →
vidiv © (2006-12-18 18:09) [99]Тем более речь здесь идет не о каких либо технологиях, а об основах программирования.
← →
Anatoly Podgoretsky © (2006-12-18 18:09) [100]> vidiv (18.12.2006 18:07:38) [98]
Народ от смеха по полу катается, какая тут к черту клавиатура.
Вот так и остаешься без ответов.
И это на протяжение многих лет.
← →
vidiv © (2006-12-18 18:15) [101]
Anatoly Podgoretsky © (18.12.06 18:09) [100]
> Вот так и остаешься без ответов.
Да тем и лучше. Ибо есть радость собственного познания.
А ты, Анатолий, мне кажется, слишком самовлюблен!
← →
Anatoly Podgoretsky © (2006-12-18 18:20) [102]> vidiv (18.12.2006 18:15:41) [101]
Проблемы у тебя, а влюблен я
← →
XProger © (2006-12-18 18:21) [103]for (int i = 0, min = a[i]; i < N; min = a[i] < min ? a[i] : min, i++);
я конечно понимаю что "мала букф" в этом поиске минимального элемента, но выглядит, извиняюсь, уродливо, и никак не удобочитаемо )
← →
vidiv © (2006-12-18 18:32) [104]
> Anatoly Podgoretsky © (18.12.06 18:20) [102]
>
> Проблемы у тебя, а влюблен я
С чего ты взял что у меня проблемы?
Но ты начинаешь унижать человека, если он интересуется и чегото не понимает, или еще хуже, если какойто учитель-"дятел" неправильно научил его и он не понимает чегото в корне. Это видно в тойже конференции новечков, хотя само название конференции предписывает проявлять сдержанность. Скажи, для чего? Показать что ты знаешь больше других? Это понятно, опыт ёпт. Или другая причина есть?
← →
Anatoly Podgoretsky © (2006-12-18 18:37) [105]> vidiv (18.12.2006 18:32:44) [104]
Я веду дисскуссию в стиле оппонента.
Так что к зеркалу.
← →
vidiv © (2006-12-18 18:41) [106]
> Anatoly Podgoretsky © (18.12.06 18:37) [105]
На вопрос ответишь?
← →
Anatoly Podgoretsky © (2006-12-18 18:42) [107]> vidiv (18.12.2006 18:41:46) [106]
На какой вопрос?
По моему по поводу перевода Сишных циклов в Паскаль уже все сказано, даже с кодом.
Зачем повторяться?
← →
vidiv © (2006-12-18 18:47) [108]
> Anatoly Podgoretsky © (18.12.06 18:42) [107]
Не на этот... И все же,
Предлагаю прекратить диалог. Никаких положительных эмоций...
← →
Anatoly Podgoretsky © (2006-12-18 19:10) [109]> vidiv (18.12.2006 18:47:48) [108]
Так зачем же заводил, мазохист что ли?
← →
Горгер © (2006-12-18 19:11) [110]Напишите 2 проги на Си и Паскале с циклом for и отдебужьте тем же Turbo Debugger.Я вообще принципиальной разницы не заметил...
← →
vidiv © (2006-12-18 19:12) [111]
> Anatoly Podgoretsky © (18.12.06 19:10) [109]
> Так зачем же заводил, мазохист что ли?
Мне не нравится, что ктото недооценивает моего понимания. Моя ошибка в том, что я начал доказывать чтото
← →
Anatoly Podgoretsky © (2006-12-18 19:23) [112]> vidiv (18.12.2006 19:12:51) [111]
Поддаешься психологическому программированию.
← →
vidiv © (2006-12-18 19:24) [113]
> Anatoly Podgoretsky © (18.12.06 19:23) [112]
> Поддаешься психологическому программированию.
Может быть, если это так называется. Но в любом случае мне это не нравится
← →
J_f_S (2006-12-18 21:07) [114]Последний пост темы по существу это сообщение
>iZEN © (18.12.06 15:00) [91]
После него все можно потереть.
← →
for (2006-12-19 05:24) [115]
> Думкин © (18.12.06 08:13) [68]
>
> > J_f_S (18.12.06 08:09) [67]
>
> Это мы уже в другое ударяемся. Все-таки изначально влопрос
> ставился иначе.
> Циклы фор из Си не реализуются фором в Паскале. Фор Паскаля
> не реализуется на Си также.
Чушь. Именно из Паскаля в Си for легко переводится. А вот обратно - часто никак.
Попробуй напиши программу перевода такого цикла в Паскаль:
for (int j = i + i; j < sievesize; j += i)
sieve[j] = 0;
Умом то ведь ты понимаешь как это перевести. Но программу то написать как ?
← →
Думкин © (2006-12-19 06:25) [116]> for (19.12.06 05:24) [115]
Дяд Петя, ты дурак? (с)
В Си получается не аналогичная Паскалю конструкция.Ну сколько можно об этом говорить? Нет некоторы определенно стоит жевать.
> Умом то ведь ты понимаешь как это перевести. Но программу
> то написать как ?
Если понимаю умом, то и за программой не заржавеет. Вы намекаете на плохую формализацию Си? Ну так вы первый это высказали.
← →
Думкин © (2006-12-19 06:39) [117]> > for (19.12.06 05:24) [115]
Если просто о вычислительном, то да перевод из Си в Паскаль на конструкцию с тем же функционалом "черного ящика" делается проще. В обратную же сторону с затруднениями. Но это не беда Паскаля, как и Си, но все-таки заслуга Си в том что он может наворотить то, что потом без бутылки не всегда разберешь и грамотно формализуешь. В Паскале это значительно проще.
← →
Anatoly Podgoretsky © (2006-12-19 10:27) [118]> for (19.12.2006 5:24:55) [115]
А зачем программу писать, написание займет кучу времени, а руками перевести 30 секунд.
← →
vidiv © (2006-12-19 10:41) [119]
> Попробуй напиши программу перевода такого цикла в Паскаль:
>
>
> for (int j = i + i; j < sievesize; j += i)
> sieve[j] = 0;
str_replace("for (int j = i + i; j < sievesize; j += i)\n sieve[j] = 0;", "for j:=i+i to pred(sievesize) div i do seive[j*i]=0", $code); =)
на самом то деле ничего сложного =)
> Умом то ведь ты понимаешь как это перевести. Но программу
> то написать как ?
как уже тут сказали, сишный for скорее соостветствует паскалекскому while
, поэтому перевести достаточно просто.
ЗЫ. Спорить на эту тему также глупо, как и доказывать, что слово, к примеру, СЕВЕР, не переводится на английский язык, т.к. запись "CEBEP" не означает сторону света, край ..., если вообще чтолибо означает.
← →
Solution (2006-12-21 01:53) [120]Удалено модератором
Страницы: 1 2 3 4 5 6 вся ветка
Форум: "Прочее";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
Память: 0.69 MB
Время: 0.062 c