Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.28;
Скачать: CL | DM;

Вниз

Сишные циклы 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;
Скачать: CL | DM;

Наверх




Память: 0.71 MB
Время: 0.039 c
15-1167484573
Slider007
2006-12-30 16:16
2007.01.28
С днем рождения ! 30 декабря


15-1168153024
Slider007
2007-01-07 09:57
2007.01.28
С днем рождения ! 7 января


11-1145454143
Unknown Mystic
2006-04-19 17:42
2007.01.28
Обновление измененного kol.pas


15-1168031933
PHPdeveloper
2007-01-06 00:18
2007.01.28
Хммм


2-1168639754
Ezorcist
2007-01-13 01:09
2007.01.28
Overriding virtual method TRegReaderObj.Destroy has lower.....