Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1166237552
for
2006-12-16 05:52
2007.01.28
Сишные циклы FOR в Паскаль не переводятся?


2-1168433997
NovaC
2007-01-10 15:59
2007.01.28
WinToDos &amp; CopyFile


15-1166074217
Gydvin
2006-12-14 08:30
2007.01.28
А был ли "сглаз"


2-1168421143
Kell
2007-01-10 12:25
2007.01.28
Создание объектов в RunTime


1-1165330455
GrayFace
2006-12-05 17:54
2007.01.28
Наткнулся в реестре на параметр "Add interface methods"





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский