Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Pascal для AVR
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
777777
Цитата(ARV @ Dec 11 2008, 10:13) *
а преобразование ch := locase(ch), являющееся традиционным для паскаля, сработает всегда.

Разумеется, на практике следует пользоваться tolower(). Но вы хотели примеров - вот вам пример: паскаль не позволяет выполнять арифметические операции с символами. Да, для стандартных случаев, типа перевода регитра, еть функции, но случаи бывают и нестандартные.
Цитата(ARV @ Dec 11 2008, 10:13) *
я спрашивал, как долго вы будете среди 10000 строк искать случайно набранный символ в отладчике? ну дрогнула у вас рука при вводе - бывает, не так ли?

Отладка - обязательный процесс разработки программ. Может рука дрогнула, может плохое понимание алгоритма, может что-то еще - все это надо отлаживать. Не бывает прогармм, которые заработали сразу. И компилятор вам не поможет - не знает он, что вы хотите написать. И если при сложении целых вы написали не ту переменную, которую надо, а другую, которая тоже есть в программе - компилятор решит что так и надо и вы долго будете искать ошибку.
Цитата(ARV @ Dec 11 2008, 10:13) *
самое интересное, что если я вместо практически любого = поставлю == - компилятор Си проглотит это практически со 100% вероятностью даже без ворнинга

Вы заблуждаетесь.
AVR:
../tn.c:242: warning: suggest parentheses around assignment used as truth value
MSVC:
c:\users\... .cpp(307) : warning C4706: assignment within conditional expression
ARV
Цитата(gotty @ Dec 11 2008, 10:33) *
Не всякий компилятор. gcc-3.4.5 выдаёт предупреждение при -Wall, а любое предупреждение - фактически ошибка. Другие компиляторы тоже не отстают smile.gif
Ищите другой пример wink.gif
а я и говорил, если повезет - компилятор скажет про неиспользуемый результат smile.gif повторяю - я Си неплохо знаю. а что скажете про это:
Код
int a = b == c;
здесь тоже ворнинг будет? wink.gif

Цитата(777777 @ Dec 11 2008, 10:44) *
Разумеется, на практике следует пользоваться tolower(). Но вы хотели примеров - вот вам пример: паскаль не позволяет выполнять арифметические операции с символами. Да, для стандартных случаев, типа перевода регитра, еть функции, но случаи бывают и нестандартные.
никого не останавливает при этом использовать приведение типов (которое в Си сплошь и рядом применяется), а приведение типов и в паскале возможно smile.gif хотя, вообще говоря, символ в паскале - это не число, и вполне логично, что просто так его просуммировать с числом нельзя. контроль типов, знаете ли...


Цитата(777777 @ Dec 11 2008, 10:44) *
И компилятор вам не поможет - не знает он, что вы хотите написать. И если при сложении целых вы написали не ту переменную, которую надо, а другую, которая тоже есть в программе - компилятор решит что так и надо и вы долго будете искать ошибку.
это вам компилятор не поможет, ибо не знает. а паскаль знает, что знак присваивания может быть в строке только один, что целому нельзя присваивать результат логического выражения и т.п. в итоге большая часть ошибок дрожащих рук им будет найдена, избавляя меня от необходимости их искать вообще. а в остальном - да. отладку никто не отменял.

блин, не заметил, как скатился на выискивание недостатков в Си, что изначально не входило в мои планы smile.gif если можно - вернемся к выискиванию плохого в паскале smile.gif
777777
Цитата(ARV @ Dec 11 2008, 11:01) *
а что скажете про это:
Код
int a = b == c;
здесь тоже ворнинг будет? wink.gif

А если в паскале написать a := b = c что будет?
Я вообще не понимаю, что это за доводы - написать какой-то бредовый код и сказать - вот смтрите, на Си можно написать неправильную программу, значит это плохой язык!
Цитата(ARV @ Dec 11 2008, 11:01) *
никого не останавливает при этом использовать приведение типов (которое в Си сплошь и рядом применяется), а приведение типов и в паскале возможно smile.gif

Приведение типов в Си используется в сомнительных случаях - например, если вы попытаетесь указателю присвоить целое - операция странная, но в редких случаях необходимая. Но если вы складываете char и int - это рядовая операция и ничего приводить не требуется.
zhevak
Цитата(ARV @ Dec 11 2008, 11:53) *
вы же не станете говорить, что человек с веснушками - дебил, а чистолицый - умный?...

И тем не менее, на должность, которая предполагает непосредственный контакт с клиентами (типа продавец, менеджер, певец, ...) обычно подбирают человека "по лицу", а не по его уму, и отказывают умному человеку, но с безобразным лицом. Большая часть программистов так и поступают в отношении Паскаля, сливая его. Но в жизни всегда присутствуют исключения. Поэтому находится небольшая горстка людей, которые певцов выбирают по умению находить неберущиеся интегралы.

Цитата
а я скажу, что чем длиннее текст программы за счет длинных имен переменных, лексем языка и т.п. - тем ближе он к пониманию человеком, нативнее. так сказать. и я вижу в этом плюс, а не минус. но непринципиальный плюс - веснушку smile.gif

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

я изменил некоторые термины и вот что получилось:
Цитата
язык можно назвать плохим, если он не просто неудобен вам (например, из-за того, что вы слишком напуганы лаконичностию си-шных лексем и желаете набирать BEGIN-END-PROCEDURE-FUNCTION-PROGRAM-THEN и т.д. вместо фигурных скобок), а содержит явные рамки, сужающие ваши возможности
...
это существенно затрудняет как процесс алгоритмизации, так и понимания логики уже готовой программы.

Да, да. Это особенно так, если учесть, что программист не понимает для чего нужны комментарии.

Цитата
примеров много. есть кодировки и более экзотические.
а преобразование ch := locase(ch), являющееся традиционным для паскаля, сработает всегда.

Эт-точно! В Си ведь отсутствует аналогичная библиотечная функция? Поэтому Си-шникам приходится колдовать с битами, что очень сильно усложняет понимание текста программы. Бред какой-то!
ARV
Цитата(777777 @ Dec 11 2008, 11:13) *
А если в паскале написать a := b = c что будет?
будет ошибка компиляции, если а - число, а не логическая переменная. я не зря написал код на си с ЧИСЛАМИ. в паскале числа отдельно, символы - отдельно, логические отношения - отдельно, и только в Си мухи умножаются на котлеты и это считается нормальным.

по поводу рассуждений "все шагают в ногу, а паскалисты - не в ногу" даже и говорить не стану - устал уже. вместо доказательств превосходства ограничиться констатацией - это ваш стиль, я понял. не надо повторяться. вы не убедили меня, что Си лучше паскаля. но свою точку зрения высказали. спасибо.

а вот явно сужающие рамки возможности, о которых вы все время толкуете, так и остались виртуальными миражами - кроме жалкой попытки доказать, что символ и число на самом деле есть эквиваленты, ничего нету... почему не откликаетесь на предложение сравнить примитивнейший код, что я предложил выше? есть сомнения, что Си победит или что? давайте доказывать свою точку зрения фактами, а не словами. раз мы тут программисты - будем говорить на языках программирования, оставляя человеческие слова для комментариев smile.gif идет? wink.gif
zhevak
Цитата(ARV @ Dec 11 2008, 12:29) *
я согласен, что больше свободы - больше ответственности. а вы согласны с тем, что меньше законов - больше анархии?

Не знаю как Вам, но меня всегда тяготило принудительное членство во всяких принерско-комсомольских организациях. Анархия в разумных пределах намного лучше, чем клетка из законов. Ограничения нужны тем, кто боиться ошибиться; тем, кто боится ответственности; тому, кто не умеет правильно распорядится своими ресурсам.

Закон -- это прибежище, прикрытие и оправдание несостоятельности личности. С законам скучно, но безопасно. Умелое же использование анархии даст обществу (программе) большую пользу, чем безудержное законотворчество.
ARV
Цитата(zhevak @ Dec 11 2008, 11:17) *
обычно подбирают человека "по лицу", а не по его уму, и отказывают умному человеку, но с безобразным лицом. Большая часть программистов так и поступают в отношении Паскаля, сливая его. Но в жизни всегда присутствуют исключения.
прямо по Фрейду! подсознательное определяет реальное smile.gif вот она - истина! не за достоинства любим, а нелюбим за недостатки! smile.gif главное - рожей не вышел, а то, что внутри - даже не интересует из любопытства...


Цитата(zhevak @ Dec 11 2008, 11:33) *
Закон -- это прибежище, прикрытие и оправдание несостоятельности личности. С законам скучно, но безопасно. Умелое же использование анархии даст обществу (программе) большую пользу, чем безудержное законотворчество.
глупость, коих свет не видывал, снова высказанная бездоказательно.
msalov
Цитата(ARV @ Dec 11 2008, 10:32) *
... почему не откликаетесь на предложение сравнить примитивнейший код, что я предложил выше? есть сомнения, что Си победит или что? давайте доказывать свою точку зрения фактами, а не словами. раз мы тут программисты - будем говорить на языках программирования, оставляя человеческие слова для комментариев smile.gif идет? wink.gif


Вот вам факт. Если я напишу программу, аналогичную вашей, в ней либо будет уязвимость переполнения буфера, либо она будет безопасной и я буду знать сколько ресурсов требует моя программа и я буду решать на что делать упор, на быстродействие или на используемую память. А Вы тоже самое можете сказать про приведённую Вами программу?
Но всё таки было б неплохо не отклоняться от темы микроконтроллеров. Для них это ещё более актуально.
ARV
Цитата(gotty @ Dec 11 2008, 12:02) *
Вот вам факт. Если я напишу программу, аналогичную вашей, в ней либо будет уязвимость переполнения буфера, либо она будет безопасной и я буду знать сколько ресурсов требует моя программа и я буду решать на что делать упор, на быстродействие или на используемую память. А Вы тоже самое можете сказать про приведённую Вами программу?
Но всё таки было б неплохо не отклоняться от темы микроконтроллеров. Для них это ещё более актуально.
программа с уязвимостью - не будет полным аналогом моей - это главное. речь шла про полный аналог. вы попытались изменить условия задачи, пытаясь маневрировать между памятью и быстродействием, а на самом деле никакого выбора у вас нет. так вот, задание было конкретным - полный аналог. все прочее - не важно. как профессионал, вы должны просто сделать, не задумываясь о побудительных причинах такого условия. в этом случае тест будет корректным. ведь его цель - как раз и сравнить скорость и требуемую память (а заодно - объем усилий программиста) для решения простой задачи.

про свою программу я могу с гарантией сказать лишь то, что она будет работать всегда и везде одинаково. для МК - на сколько хватит его ОЗУ. уязвимостей, связанных с языком, в программе нет принципиально. к вводимым пользователем символам она не критична.

если желаете продолжить разговор в столь же конструктивном ключе - давайте ужесточим условия: пусть длина вводимой пользователем строки не более N символов. в моей программе это будет так:
Код
var str : string[N];
// далее по тексту
вы сделайте программу на Си с теми же ограничениями и работающую точно так же - мы в равных условиях по уязвимости переполнения. но вот остальное - давайте продолжим сравнивать.
zhevak
Цитата(ARV @ Dec 11 2008, 13:05) *
а я и говорил, если повезет - компилятор скажет про неиспользуемый результат smile.gif повторяю - я Си неплохо знаю.

Оба-на! Проверка ошибок компиляции по гороскопу? Что-то новое...

А я могу Вас попросить прокомментировать слово "повезет". А то содается какое-то впечатление, что у Вы, действительно, свои программы пишите по принципу "повезет-не повезет".

А заодно кратенько нарисуйте портрет целевой группы (покупателей, потребителей) программы.
Цитата
я вот подумал, может, простейший пример паскалевского кода разберем?
Код
var str : string;
begin
   str := readln;
   writeln(str);
end.

Мне кажется, что идея (целевое применение) этой гы-гы-программы настолько надумана, что ее лучше выкинуть, т.к. таких программ в жизни не бывает. Написать-то можно все что угодно. А вот продать написанное... Единственное назначение этой гы-гы-проги -- учебный момент. Больше она никуда не годится. А раз так, то какой смысл обсуждать то, чего на самом деле нет?

А вообще, readln -- это что, переменная или вызов функции? Судя по синтаксису -- должна переменная. Доступ к переменным происходит очень быстро. Но мы с вами знаем, что readln -- это есть функция, которая работает намного дольше долго. Паскаль вводит нас в заблуждение. Теперь ко всем проблемам добавилась еще одна -- теперь я должен помнить кто есть переменная, кто есть вызов функции. С первого взгляда на исходники хрен поймешь.

Скажите мне, как быстро отработает код, который, допустим, я получил от предыдущего программера:
Цитата
alpha := beta;

Конечно, это не фатально! Что бы узнать что есть beta, нужно просто поискать это имя.


Все эти разборки примеров говорят не столько о преимуществах и недостатках того или иного языка, сколько об индивидуальных предпочтениях. Кому-то нравится спать на кафеле в переходах, а кто-то предпочетает спать на матраце в теплой квартире. Каждый вибирает себе инструмент согласно своим убеждениям и потребностям.
ARV
Цитата(zhevak @ Dec 11 2008, 12:15) *
Оба-на! Проверка ошибок компиляции по гороскопу? Что-то новое...
не по гороскопу, а если -Wall включено (или аналогичная опция). а что оно включено - не факт.
Цитата(zhevak @ Dec 11 2008, 12:15) *
А я могу Вас попросить прокомментировать слово "повезет". А то содается какое-то впечатление, что у Вы, действительно, свои программы пишите по принципу "повезет-не повезет".
повезет - означает, смотря в какое место я добавлю лишний знак равенства. я привел далее пример. который 100% не ворнингуется, но принципиально меняет суть операторов.
Цитата(zhevak @ Dec 11 2008, 12:15) *
Мне кажется, что идея (целевое применение) этой гы-гы-программы настолько надумана, что ее лучше выкинуть, т.к. таких программ в жизни не бывает. Написать-то можно все что угодно. А вот продать написанное... Единственное назначение этой гы-гы-проги -- учебный момент. Больше она никуда не годится. А раз так, то какой смысл обсуждать то, чего на самом деле нет?
смысл в том, чтобы разобраться в достоинствах и недостатках языка и, заодно, в степени беспристрастности спорщиков. вы говорите - у вас инструментарий круче? продемонстрируйте. пример чисто демонстрационный - не все же время хелловорд для этой цели использовать smile.gif
Цитата(zhevak @ Dec 11 2008, 12:15) *
А вообще, readln -- это что, переменная или вызов функции? Судя по синтаксису -- должна переменная. Доступ к переменным происходит очень быстро. Но мы с вами знаем, что readln -- это есть функция, которая работает намного дольше долго. Паскаль вводит нас в заблуждение. Теперь ко всем проблемам добавилась еще одна -- теперь я должен помнить кто есть переменная, кто есть вызов функции. С первого взгляда на исходники хрен поймешь.
к счастью, программист на паскале не должен думать над тонкостями реализации языка, он тратит свои силы именно на решение задачи. про хрен поймешь - отметаем, т.к. это можно сказать про любой язык тому, кто с ним не знаком. про время исполнения - согласен, для функции оно больше, а разве в Си не так? когда вы работаете со стандартным вводом-выводом, вы не особенно страдаете над быстродействием стандартных функций, не так ли?
Цитата(zhevak @ Dec 11 2008, 12:15) *
Скажите мне, как быстро отработает код, который, допустим, я получил от предыдущего программера:
Конечно, это не фатально! Что бы узнать что есть beta, нужно просто поискать это имя.
логично. и в этом сравниваемые языки не имеют различий. тип переменной знать надо. деваться некуда.
Цитата(zhevak @ Dec 11 2008, 12:15) *
Все эти разборки примеров говорят не столько о преимуществах и недостатках того или иного языка, сколько об индивидуальных предпочтениях. Кому-то нравится спать на кафеле в переходах, а кто-то предпочетает спать на матраце в теплой квартире. Каждый вибирает себе инструмент согласно своим убеждениям и потребностям.
а вот вы сначала решите эту примитивную задачу - а потом скажете. действительно ли она не заслуживает внимания smile.gif уверен, что не все так просто, как вам показалось. а после вашего решения мы и сравним результаты - по скорости, размеру, памяти и т.п. - по объективным параметрам. и сделаем выводы. устраивает?
zhevak
это игра по Вашим правилам. Не красиво поступаете.
Цитата(ARV @ Dec 11 2008, 14:10) *
если желаете продолжить разговор в столь же конструктивном ключе - давайте ужесточим условия: пусть длина вводимой пользователем строки не более N символов. в моей программе это будет так:
Код
var str : string[N];
// далее по тексту
вы сделайте программу на Си с теми же ограничениями и работающую точно так же - мы в равных условиях по уязвимости переполнения.

А зачем "оно нам это надо?", да еще с такими условиями -- "с теми же ограничениями и работающую точно так же". Ой, Вы мастер на интриги и провакации!

Сравнивать нужно не по отдельным моментам кода, а общую картину. (Общая картина -- это и есть картина отношения Паскаль- и Си-разработок. Что может быть еще объективнее.) А то давайте начнем сравнивать длину лексем BEGIN-END с {}. Ну ведь глупость получается, правда? Так что давайте не будем лепить проблемы из двух строчек программы.

Да, к стати
Цитата
по поводу рассуждений "все шагают в ногу, а паскалисты - не в ногу" даже и говорить не стану

Есть две огромные, но существенно отличающиеся по количеству группы людей...
Дак, кто из них идет не в ногу, первые или вторые?
ARV
блин! совсем заморочили!
smile.gif вместо str := readln; надо же писать readln(str); smile.gif

простите великодушно, зарапортовался, переключаясь с Си на Паскаль и обратно smile.gif
msalov
Цитата(ARV @ Dec 11 2008, 11:10) *
программа с уязвимостью - не будет полным аналогом моей - это главное. речь шла про полный аналог. вы попытались изменить условия задачи, пытаясь маневрировать между памятью и быстродействием, а на самом деле никакого выбора у вас нет. так вот, задание было конкретным - полный аналог. все прочее - не важно. как профессионал, вы должны просто сделать, не задумываясь о побудительных причинах такого условия. в этом случае тест будет корректным. ведь его цель - как раз и сравнить скорость и требуемую память (а заодно - объем усилий программиста) для решения простой задачи.

про свою программу я могу с гарантией сказать лишь то, что она будет работать всегда и везде одинаково. для МК - на сколько хватит его ОЗУ. уязвимостей, связанных с языком, в программе нет принципиально. к вводимым пользователем символам она не критична.

если желаете продолжить разговор в столь же конструктивном ключе - давайте ужесточим условия: пусть длина вводимой пользователем строки не более N символов. в моей программе это будет так:
Код
var str : string[N];
// далее по тексту
вы сделайте программу на Си с теми же ограничениями и работающую точно так же - мы в равных условиях по уязвимости переполнения. но вот остальное - давайте продолжим сравнивать.

Давайте меряться smile.gif
Код
#include <stdio.h>
int main ()
{
    char c;
    do
    {
        c = getchar();
        putchar(c);
    }
    while (c != '\n');
    return 0;
}

Размер 15994 байт. Используемых пользовательских переменных - 1байт.
Код
bash.exe"-3.1$ gcc -Wall -O2 ./read.c -o ./read.exe
bash.exe"-3.1$ size ./read.exe
   text    data     bss     dec     hex filename
   2644     740     224    3608     e18 ./read.exe
bash.exe"-3.1$ gcc -v
Reading specs from c:/msys/bin/../lib/gcc/mingw32/3.4.5/specs
Configured with: ../gcc-3.4.5-20060117-3/configure --with-gcc --with-gnu-ld --wi
th-gnu-as --host=mingw32 --target=mingw32 --prefix=/mingw --enable-threads --dis
able-nls --enable-languages=c,c++,f77,ada,objc,java --disable-win32-registry --d
isable-shared --enable-sjlj-exceptions --enable-libgcj --disable-java-awt --with
out-x --enable-java-gc=boehm --disable-libgcj-debug --enable-interpreter --enabl
e-hash-synchronization --enable-libstdcxx-debug
Thread model: win32
gcc version 3.4.5 (mingw-vista special r3)

P.S. у любого микроконтроллера найдётся 1 байт для этой же программы, а не пока закончится ОЗУ wink.gif

P.P.S. уж простите, поддался на провокацию.
ARV
Цитата(zhevak @ Dec 11 2008, 12:41) *
это игра по Вашим правилам. Не красиво поступаете.
да, по моим. что некрасивого? от вас не дождался предложений реально протестировать хоть что-то. предложил сам. правила вроде ясные. что не так?
Цитата(zhevak @ Dec 11 2008, 12:41) *
А зачем "оно нам это надо?", да еще с такими условиями -- "с теми же ограничениями и работающую точно так же". Ой, Вы мастер на интриги и провакации!
в чем провокации? разве голословное утверждение. что Паскаль хуже - это не провокация? я не говорил ничего подобного, потому требую доказательств от тех, кто так говорил. я пошел на уступки - ограничил размер области памяти под строку, чтобы исходное "окружение" для обоих были одинаковы. под "работает точно так же" я имею ввиду не какие-то скрытые тонкости и микросекунды, а чисто по реакции на ввод-вывод. ОС для тестирования я так же конкретно назвал - Windows, консольное приложение. что снова не так?
Цитата(zhevak @ Dec 11 2008, 12:41) *
Сравнивать нужно не по отдельным моментам кода, а общую картину. (Общая картина -- это и есть картина отношения Паскаль- и Си-разработок. Что может быть еще объективнее.)
гм... предлагаете протестировать упомянутый мной проект из 10000 строк, имеющий реальную ценность? ГЫ smile.gif давайте хотя бы с этой мелочью решим... картина, как мозаика, сложится потом... может быть smile.gif
Цитата(zhevak @ Dec 11 2008, 12:41) *
А то давайте начнем сравнивать длину лексем BEGIN-END с {}. Ну ведь глупость получается, правда? Так что давайте не будем лепить проблемы из двух строчек программы.
будут продолжаться придирки в отношении "длинных лексем паскаля" и "экономии сил программиста" - будем и это сравнивать. будет разговор по существу - я на такие глупости не пойду smile.gif
Цитата(zhevak @ Dec 11 2008, 12:41) *
Да, к стати
Есть две огромные, но существенно отличающиеся по количеству группы людей...
Дак, кто из них идет не в ногу, первые или вторые?

если провести исторические, общественные и т.п. аналогии - не раз бывало так, что только один шагал в ногу, а остальные топали не в ногу smile.gif больше всего на земле насекомых, но люди как-то считают себя царями природы... так что не в количестве дело... во всяком случае, связь неоднозначна между количеством и качеством.

Цитата(gotty @ Dec 11 2008, 12:48) *
Давайте меряться smile.gif
P.P.S. уж простите, поддался на провокацию.
увы... пока не станем меряться. вы изменили условия задачи.
ваша программа работает не так, как моя. в моей пользователь вводит строку и жмет Enter - происходит перевод строки в консоли и выводится "эхо" строки. у вас будет посимвольное эхо.
zhevak
Цитата(ARV @ Dec 11 2008, 14:32) *
не по гороскопу, а если -Wall включено (или аналогичная опция). а что оно включено - не факт.

да-а, тогда, действительно, у Вас по жизни большие проблемы... Сочувствую.

Цитата
повезет - означает, смотря в какое место я добавлю лишний знак равенства. я привел далее пример. который 100% не ворнингуется, но принципиально меняет суть операторов.

Отладку, всестороннее тестирование и многократные прогоны перед сдачей заказчику отменяем?
При желании можно и ... сломать. Было б желание!

Цитата
в степени беспристрастности спорщиков. вы говорите - у вас инструментарий круче? продемонстрируйте. пример чисто демонстрационный - не все же время хелловорд для этой цели использовать smile.gif

Кому продемонстрировать? Кто будет судить? Здесь нет неангажированных судий.

Цитата
к счастью, программист на паскале не должен думать над тонкостями реализации языка, он тратит свои силы именно на решение задачи.

Возьмите Васик -- там еще проще.

Цитата
а вот вы сначала решите эту примитивную задачу - а потом скажете. действительно ли она не заслуживает внимания smile.gif уверен, что не все так просто, как вам показалось. а после вашего решения мы и сравним результаты - по скорости, размеру, памяти и т.п. - по объективным параметрам. и сделаем выводы. устраивает?

Нет, не устраивает. Как минимум мне не интересно это делать для Вас. Я банально не вижу особого смысла тратить на Вас свое время. Про судий я уже говорил. Да, и критерии оценки, условия и методы также должны быть заранее озвучены и удовлетворять обе спорящие стороны. Ничего этого нет. О чем говорить?
msalov
Цитата(ARV @ Dec 11 2008, 11:59) *
увы... пока не станем меряться. вы изменили условия задачи.
ваша программа работает не так, как моя. в моей пользователь вводит строку и жмет Enter - происходит перевод строки в консоли и выводится "эхо" строки. у вас будет посимвольное эхо.

Обожемой, у меня дефектный компьютер
Код
D:\_tests>read.exe
q487vyloqwigyvhpq348qoi\
q487vyloqwigyvhpq348qoi\

D:\_tests>

Но главное результат, а не способ, за что вы и ратуете. А в данном случае он один и тот же.
zhevak
Внимание! Проблема Паскаля "намбер ту".
Цитата(ARV @ Dec 11 2008, 14:41) *
блин! совсем заморочили!
smile.gif вместо str := readln; надо же писать readln(str); smile.gif

простите великодушно, зарапортовался, переключаясь с Си на Паскаль и обратно smile.gif

Переключение программиста с одного языка на другой приоводит к глупейшим ошибкам, кои отнимают время.
ARV
Цитата(gotty @ Dec 11 2008, 13:06) *
Обожемой, у меня дефектный компьютер
Код
D:\_tests>read.exe
q487vyloqwigyvhpq348qoi\
q487vyloqwigyvhpq348qoi\

D:\_tests>

Но главное результат, а не способ, за что вы и ратуете. А в данном случае он один и тот же.
не совсем так. приложите исполняемый файл - что-то хочется проверить на моем компьютере smile.gif
если вы мне объясните, как так в вашей программе получается, что ввод с немедленным выводом символа не приводит к следующему:
Цитата
aabbccddee
я тут же приму вашу точку зрения, что Си круче во всем всего, что было, есть и будет во веки веков smile.gif

getchar() вводит символ из консоли (при этом символ в самой консоли отображается), putchar() выводит символ в консоль. значит, по вашей программе при вводе 'a' в консоли появится первый раз символ 'a', а затем он тут же выведется обратно и появится рядом с первым. после нажатия Enter в консоли перевеедтся строка, символ введется и тут же выведется, т.е. строка переведется еще раз - после чего программа завершится. что не так в моих рассуждениях? как получается две строки из одинаковых последовательностей символов?
zhevak
Вот это то, о чем я талдычу!
Цитата(ARV @ Dec 11 2008, 14:59) *
увы... пока не станем меряться. вы изменили условия задачи.
ваша программа работает не так, как моя. в моей пользователь вводит строку и жмет Enter - происходит перевод строки в консоли и выводится "эхо" строки. у вас будет посимвольное эхо.

Вы предлагаете свои условия. Они не устравиают. Люди свои условия. Теперь Вас не устраивает. Что будем делать?

Цитата
гм... предлагаете протестировать упомянутый мной проект из 10000 строк, имеющий реальную ценность? ГЫ давайте хотя бы с этой мелочью решим... картина, как мозаика, сложится потом... может быть

ключевая фраза выделена.
Мозайка не сложится, слишком много пазлов придется перебрать. Реально нам это не осуществить. Значит, мы не в праве по звосту, хоботу и ноге говорить о слоне. Еще раз повторяю критерий оценки -- если при свободном выборе большинство людей препочетают один продукт другому, значит он лучше.

Еще раз. Ваше утверждение "Паскаль не хуже Си" эквивалентно утверждению "Паскаль лучше или такой же как Си". Но мы с вами знаем, что эти языки не равнозначны и имеют разную популярность. Значит об их равенстве не может быть и речи. А это значит, что один из них лучше, другой хуже. В каких-то отдельных, выхваченных из контекста, моментах один язык будет уделывать другой. В других, также выхваченных моментах, картина будет обратная. Т.е. тут можно долго и бесполезно тратить время на споры. Но если подводить общий знаменатель, а мы все, тут присутствующие, это хотим сделать, нам нужно подняться сразу над всеми отдельно взятыми проблемами того и другого языка и оценит ситуацию в мире Си-Паскаль в целом.

Предположем, что Паскаль лучше Си. Предположим, мы имеем свободный рынок компиляторов и программистов, как потребителей этих компиляторв. Предположим так же, что мы умеем писать компиляторы. Мы видим, что Паскаль более востребован, чем Си.

Что мы делаем? Мы садимся и через какое-то время создаем Паскаль-компилятор. Этот компайлер на рынке востребован, и мы его продаем с тем или иным успехом, а полученные доходы пускаем на его клонирование и дальнейшее развитие. Рынок Си-компайлеров сокращается.

Скажите мне, что здесь не так? Почему наблюдается обратная картина? Почему масса людей делает свой свободный выбор не в пользу Паскаля? Неужели они все на столько глупы, что не замечают очевидных преимуществ Паскаля? Особенно после обуения Паскалю в школе и институте.
ARV
zhevak, ваш словесный понос утомляет. без комментариев. хотите что-то доказать - доказывайте кодом, а не словами. как попытался gotty. с ним я продолжу разговор (если он пожелает), с вами - нет.

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

будем по-спортивному действовать? wink.gif

Цитата(zhevak @ Dec 11 2008, 13:40) *
Вы предлагаете свои условия. Они не устравиают. Люди свои условия. Теперь Вас не устраивает. Что будем делать?
ок. можем переиграть условия. вот код, 1 в 1 аналогичный предложенному "другими" людьми:
Код
var
    c : char;
begin
  repeat
    read(c);
    write(c);
  until c = #$0d;
end.
размер exe-шника из-под Delphi7 15360 байт. скажите, не говорит ли это о том, что результат из-под Паскаля как минимум не хуже Сишного ни по размеру итогового файла. ни по скорости его исполнения?

P.S. самое странное, что действительно, при этом коде вывродится 2 строки, как у gotty! если поначалу я подозревал, что тут какой-то подвох с его стороны, то теперь я сам не понимаю. как это возможно... судя по всему, дело в буфферизации ввода-вывода ОС... однако, это по-моему, странно sad.gif

P.P.S. в общем, ковыряния в отладчике подтвердили мою догадку: read у меня и getchar у gotty фактически считывают не символ, а строку, совпадающую по размеру с внутренним размером буффера ввода, выделенному библиотекой стандартного ввода-вывода. к тому же похоже консоль windows свой буфер имеет...
как выяснилось, данный пример некорректный - слишком системнозависимый smile.gif предлагаю вернуться к исходному - ввода целой строки "по-правилам". можно с ограничением размера. можно без smile.gif
msalov
Цитата(ARV @ Dec 11 2008, 12:57) *
размер exe-шника из-под Delphi7 15360 байт. скажите, не говорит ли это о том, что результат из-под Паскаля как минимум не хуже Сишного ни по размеру итогового файла. ни по скорости его исполнения?

Код
D:\_tests>strip ./read.exe

D:\_tests>dir read.exe
Том в устройстве D имеет метку Новый том
Серийный номер тома: 5800-2766

Содержимое папки D:\_tests

11.12.2008  13:23             5 632 read.exe
               1 файлов          5 632 байт
               0 папок  60 930 355 200 байт свободно

D:\X\1610\_tests>

либо так
Код
gcc -o ./read.exe -Wall -Os -Wl,-s ./read.c

Мы ж меряемся программами а не отладочной информацией

P.S. предлагаю остановиться. Результаты никого не переубедят при любом из исходов. Все останутся при своём мнении.
Aesthete Animus
Цитата(ARV @ Dec 11 2008, 13:57) *
P.S. самое странное, что действительно, при этом коде вывродится 2 строки, как у gotty! если поначалу я подозревал, что тут какой-то подвох с его стороны, то теперь я сам не понимаю. как это возможно... судя по всему, дело в буфферизации ввода-вывода ОС... однако, это по-моему, странно sad.gif

Ничего странного, это называется канонический режим, в котором консоль находится по умолчанию. Подробности здесь
http://www.gnu.org/software/libtool/manual...cal-or-Not.html
msalov
Цитата(Aesthete Animus @ Dec 11 2008, 13:32) *
Ничего странного, это называется канонический режим, в котором консоль находится по умолчанию. Подробности здесь
http://www.gnu.org/software/libtool/manual...cal-or-Not.html

Спасибо за ссылку.
ARV
ок. будем считать 1:0 в вашу пользу по соревнованию в размерах smile.gif

с неправильным тестом все ясно - там, в сущности, все буферы системные используются. давайте вернемся к первоначальному варианту теста. и посмотрим, сколько сухого остатка будет там. чтобы как-то избавиться от влияния системных буферов, предлагаю такой вариант:
Код
var
    str : string;
    F : text;
begin
  assign(F, '1.txt');
  reset(F);
  repeat
    readln(F,str);
    writeln(str);
  until str = '';
  close(F);
end.
задача: считать строку любой (заранее неизвестной) длины из файла в переменную и вывести ее. я вбил сначала в свой файл 1.txt 9000 символов без символов \n\r. результат работы правильный - без переполнений и т.п. затем сделал файл 11 мегабайт (простым копированием) - результат аналогичный. размер 16384 байта smile.gif

ваш ход! smile.gif
zhevak
Цитата(ARV @ Dec 11 2008, 15:57) *
zhevak, ваш словесный понос утомляет. без комментариев. хотите что-то доказать - доказывайте кодом, а не словами. как попытался gotty. с ним я продолжу разговор (если он пожелает), с вами - нет.

Да Вы меня тоже утомили уже прилично. Вы внимательно читаете мои постинги? Я там где-то уже говорил, что мы не в состянии перебрать кучу пазлов, что бы сложить картину. Поэтому выхваченный в истерике (придуманный на пустом месте) код рассматривать не имеет смысла. Где-то победит Паскаль, где-то Си. Мы даже процентное отношение побед и проигрышей не сможем правильно оценить. А Вы тут со своими примерами для 8-го класса пытаетесь народ заставить расматривать листики-иголочки на веточках. А Вы поднимитесь на самолете и оцените, чей лес гуще и больше.


Цитата
по правилам спортивных созтязаний противнику, ранее принявшему вызов и по любым причинам затем отказавшемуся (уклонившемуся) от поединка, засчитывается поражение. и даже если он призовет всех философов мира, которые на коммерческих, религиозных, физико-математических, литературно-филологических примерах "докажут", что спортсмен гораздо сильнее - в расчет такие аргументы не принимаются.

Ну блин, даже не знаю как уйти от нелестных комментариев, того как Вы понимаите ситуацию...
Я Вам уже в который раз говорю -- у нас нет ни судий, ни озвученных условий тестирования, которые устраивали бы обе стороны. У нас ничего нет! А Вы, наивный, пытаетесь еще угрожать мне поражением!
О чем Вы? Очнитесь!


Цитата
P.S. самое странное, что действительно, при этом коде вывродится 2 строки, как у gotty! если поначалу я подозревал, что тут какой-то подвох с его стороны, то теперь я сам не понимаю. как это возможно... судя по всему, дело в буфферизации ввода-вывода ОС... однако, это по-моему, странно sad.gif

Да. Мне тоже странно. Тут кто-то говорил, что неплохо знает Си. Не в курсе?


Цитата
как выяснилось, данный пример некорректный - слишком системнозависимый smile.gif предлагаю вернуться к исходному - ввода целой строки "по-правилам". можно с ограничением размера. можно без smile.gif

В топку Ваши правила! В топку все Ваши условия! Они выгодны только для Вас. В топку кодописание оторванное от жизни!


Хотите, Я Вам скажу, чем выгоднее Вам биться с gotty?
Цитата
с ним я продолжу разговор (если он пожелает), с вами - нет.

Он не заставляет Вас терять лицо, он легко поддается на Ваши провокации. Я же отвечаю Вам Вашей же монетой. В не можете меня перетянуть на свою половину, что бы там дубасить кусочками кода. Наоборот, существует большая вероятность, что я Вас могу выдернуть с вашей территории на свою и заставить играть по своим правилам. Вы еще не проиграли, но моральный дух уже сломлен!
msalov
Цитата(ARV @ Dec 11 2008, 13:46) *
задача: считать строку любой (заранее неизвестной) длины из файла в переменную и вывести ее. я вбил сначала в свой файл 1.txt 9000 символов без символов \n\r. результат работы правильный - без переполнений и т.п. затем 11 мегабайт (простым копированием) - результат аналогичный. ваш ход! smile.gif

Боюсь Вас огорчить, но я даже не буду пытаться. Языки слишком разные, паскаль для программиста дружелюбнее, а си для - целевого железа. Если хотите меряться строками динамической длинны - вам к С++.
ARV
zhevak, вы накорябали такое сообщение, что даже SQL не хочет его цитировать smile.gif ошибку выдает.

короче: даже если я проиграю - то не в споре с вами, а с достойным противником, я бы даже не назвал его противником, скорее более грамотным специалистом. чем я. а вы продолжайте тешить себя, что вы сломали мой дух smile.gif с вами связываться я не хочу.
_Pasha
Цитата(ARV @ Dec 11 2008, 15:46) *
Код
repeat
    readln(F,str);
    writeln(str);
  until str = '';

Я дико извиняюсь, но правильнее было бы написать until eof(F);
Не помню кто там говорил тысячу постов назад, но согласен, что трудновато переключаться с ЦЭ на паскаль и наоборот: лезут ошибки.
И мое мнение: чтобы правильно померяться п%ськами надо очень друг на друга разозлиться и по хорошему ТЗ наваять нечто посложнее двух операторов. А это суть убитое время. Так что не обольщайтесь - кроме ругани скорей всего ничего не будет.
В споре рождается истина... братцы, нас нае обманули! biggrin.gif
ARV
Цитата(gotty @ Dec 11 2008, 14:54) *
Боюсь Вас огорчить, но я даже не буду пытаться. Языки слишком разные, паскаль для программиста дружелюбнее, а си для - целевого железа. Если хотите меряться строками динамической длинны - вам к С++.
нет. вы меня не огорчили. ваш "ход" понятен. языки разные - это было ясно с самого начала. и назначение разное - это так же очевидно. и сравнение так же не корректное абсолютно - простой Си и Delphi, который все-таки из категории С++. все верно.

С++ по размеру исходника, скорее всего, проиграет Delphi, по итоговому экзешнику - бог знает... может, и выиграет... не важно в конце концов.

хоть я от вас и не слышал утверждения, что Паскаль хуже Си (или С++), прошу вас высказаться: вы так же считаете, что ХУЖЕ? или все-таки согласны, что ПАСКАЛЬ не хуже, не лучше, а такой же, просто иной язык. Не ограниченный какими-то глупыми рамками, дающий свободу программисту и т.п. - короче, ПО БОЛЬШОМУ СЧЕТУ ТАКОЙ ЖЕ, КАК С(С++) со скидкой на особенности синтаксиса.
все-таки вы наиболее адекватный оппонент в данном топике (были и другие, но они ограничились минимумом слов).
zhevak
Цитата(ARV @ Dec 11 2008, 16:55) *
короче: даже если я проиграю - то не в споре с вами, а с достойным противником, я бы даже не назвал его противником, скорее более грамотным специалистом. чем я. а вы продолжайте тешить себя, что вы сломали мой дух smile.gif с вами связываться я не хочу.

Ладно, чего уж там! Тем не менее, спасибо Вам за "игру".
(Правда, не понятно на основании чего Вы сделали свои выводы относительно меня, как специалиста. Впрочем, меня это (т.е. ход Ваших рассуждений) мало интересует.)

Удачи!
ARV
Цитата(_Pasha @ Dec 11 2008, 14:58) *
Я дико извиняюсь, но правильнее было бы написать until eof(F);
Не помню кто там говорил тысячу постов назад, но согласен, что трудновато переключаться с ЦЭ на паскаль и наоборот: лезут ошибки.
И мое мнение: чтобы правильно померяться п%ськами надо очень друг на друга разозлиться и по хорошему ТЗ наваять нечто посложнее двух операторов. А это суть убитое время. Так что не обольщайтесь - кроме ругани скорей всего ничего не будет.
В споре рождается истина... братцы, нас нае обманули! biggrin.gif

принимается smile.gif спешка не способствует правильнописанию smile.gif

что касается меня, я не сомневался ни секунды, что истина не родится в этом споре smile.gif для поиска истины как минимум надо воспринимать слова оппонента, а не ограничиваться только своим мнением.

Цитата(zhevak @ Dec 11 2008, 15:05) *
Удачи!
и вам не болеть! smile.gif
Aesthete Animus
Цитата(_Pasha @ Dec 11 2008, 14:58) *
В споре рождается истина... братцы, нас нае обманули! biggrin.gif

+1

Уже было собрался нафлудить, но потом одумался... нет, к черту это все... sad.gif


Цитата(ARV @ Dec 11 2008, 15:08) *
что касается меня, я не сомневался ни секунды, что истина не родится в этом споре smile.gif

Несчастен, кто ищет истин в холиварах... biggrin.gif
msalov
Цитата(ARV @ Dec 11 2008, 14:02) *
хоть я от вас и не слышал утверждения, что Паскаль хуже Си (или С++), прошу вас высказаться: вы так же считаете, что ХУЖЕ? или все-таки согласны, что ПАСКАЛЬ не хуже, не лучше, а такой же, просто иной язык. Не ограниченный какими-то глупыми рамками, дающий свободу программисту и т.п. - короче, ПО БОЛЬШОМУ СЧЕТУ ТАКОЙ ЖЕ, КАК С(С++) со скидкой на особенности синтаксиса.
все-таки вы наиболее адекватный оппонент в данном топике (были и другие, но они ограничились минимумом слов).

Цитата(gotty @ Nov 14 2008, 14:57) *
Ради этого и приводил ссылку, а так же ради того что бы помочь (если надо) осознать, что подобного рода холливары исключительно забано наблюдать со стороны smile.gif Неужели так принципиально кому-то что-то доказать?
Ну а студентам нужно предложить выбор, пусть сами решают на чём писать. (исключительно моё мнение, как человека не связанного с системой образования)

Моё мнение не поменялось и вряд ли это произойдёт smile.gif
ARV
Цитата(gotty @ Dec 11 2008, 15:15) *
Ради этого и приводил ссылку, а так же ради того что бы помочь (если надо) осознать, что подобного рода холливары исключительно забано наблюдать со стороны Неужели так принципиально кому-то что-то доказать?
а как забавно в них принимать участие! как это бодрит! smile.gif неожиданно наталкиваешься на давно забытые штуки типа режима консольного ввода smile.gif крррасота!

самое смешное, наверное, что я и Си и Delphi применяю постоянно, и очень обоим рад и доволен smile.gif потому как гармония, баланс. а односторонне неуравновешенные специалисты нервно холиварят про паскаль smile.gif
Жека
Народ, давайте серьезную задачу сформулируем.
Например, "8 ферзей".
Найти все возможные варианты расстановки 8 ферзей на шахматной доске, при которой ни один из них не бьет других. Никакой графики, варианты выдавать в виде строк типа "а3 b7 e8 ..."
Это чистая алгоритмика, интересно будет сравнить
Aesthete Animus
Цитата(ARV @ Dec 11 2008, 15:21) *
неожиданно наталкиваешься на давно забытые штуки типа режима консольного ввода smile.gif

Что значит забытые??? ( laughing.gif А теперь понаблюдаем за холиваром GUI vs CLI)


Цитата(Жека @ Dec 11 2008, 15:26) *
Народ, давайте серьезную задачу сформулируем.
Например, "8 ферзей".

Ага... Сурьезная задача wink.gif
Жека
Цитата(Aesthete Animus @ Dec 11 2008, 15:32) *
Ага... Сурьезная задача wink.gif


Ну всяко интереснее, чем ввод-вывод строк мусолить wink.gif
Goodefine
Цитата(Жека @ Dec 11 2008, 16:26) *
...давайте серьезную задачу сформулируем.
Например, "8 ферзей"...

Эту задачу люди на МК-61 (микрокалькулятор такой, кто помнит) решали. Вариантов программ было множество, включая вариант, учитывающий "зеркальность" некоторых расстановок... А память команд МК-61 была шагов на 102, если склероз не изменяет...
Harbinger
Цитата(Goodefine @ Dec 11 2008, 15:22) *
А память команд МК-61 была шагов на 102, если склероз не изменяет...

105. У 54-го 98 (это если склероз не изменяет мне).
Жека
Цитата(Goodefine @ Dec 11 2008, 16:22) *
Эту задачу люди на МК-61 (микрокалькулятор такой, кто помнит) решали. Вариантов программ было множество, включая вариант, учитывающий "зеркальность" некоторых расстановок... А память команд МК-61 была шагов на 102, если склероз не изменяет...


Ну и здорово. Я же не предлагаю написать шахматную программу уровня Deep Blue biggrin.gif
Для сравнительного теста в самый раз будет
_Pasha
Цитата(Жека @ Dec 11 2008, 16:26) *
Например, "8 ферзей".

Это чистая алгоритмика, интересно будет сравнить

По двум критериям? размер исходника/размер ехешника ?
Вот нагуглил
Код
program ferz;
uses crt;
var s,i:integer;
a:array[1..8] of boolean;
b:array[2..16] of boolean;
c:array[-7..7] of boolean;
x:array[1..8]of integer;

procedure print;
var k:integer;
begin
s:=s+1;
write('Решение номер ',s:2,' : ');
for k:=1 to 8 do write(x[k]:4);
writeln;
write('Press <Enter>');
readln;
end;{of print}

procedure try(i:integer);
var j:integer;
begin
for j:=1 to 8 do
if a[j]and b[i+j]and c[i-j] then
begin
x[i]:=j;
a[j]:=false;b[i+j]:=false;c[i-j]:=false;
if i<8 then try(i+1) else print;
a[j]:=true;b[i+j]:=true;c[i-j]:=true;
end;
end;{of try}

begin{of main}
clrscr;
for i:=1 to 8 do a[i]:=true;
for i:=2 to 16 do b[i]:=true;
for i:=-7 to 7 do c[i]:=true;
s:=0;
try(1)
end.

Рекурсия.
Leka
задача о ферзях для доски N*N, критерий - максимальное N для времени счета не более 1 мин. Или 10 мин.
forever failure
Казалось бы, причём тут микроконтроллеры Atmel AVR....
Herz
Цитата(forever failure @ Dec 11 2008, 19:03) *
Казалось бы, причём тут микроконтроллеры Atmel AVR....

+1! Вот и я удивляюсь...
Мало того, что спорщики уже давно спорят "ради спора", признавая, что переубедить их нереально в любом случае...
Мало того, что скатились, как обычно, до взаимных обвинений...
Мало того, что аргументов на всём 20-страничном сражении так и не встретилось...
Кажется, и сам предмет спора вот-вот будет забыт...
Господа! Вспомните хоть название темы!
Жека
Вот зануды... Если бы все посты во всех темах были по делу, Электроникс ужался бы раз в 10 smile.gif
Сейчас проверим, как Пашин вариант в Дельфях фунциклирует
forever failure
Твёрдое окончательное Тьфу.

Шумный, бурлящий слифф засчитан. Расчёт окончен.
Жека
Вольно, Вечный Облом biggrin.gif

Exe-шник получился 374 Кб в Дельфи 7. Найдены все 92 варианта, ура!
_Pasha
Цитата(Herz @ Dec 11 2008, 21:15) *
Мало того, что аргументов на всём 20-страничном сражении так и не встретилось...

Гы! Автор спросил, какие есть паскалевские компиляторы, и все началось - что мол нафиг оно надо, итд.

Цитата
Господа! Вспомните хоть название темы!

А чего вспоминать? Ну нет нормальных паскалей для АВР! Уже ж все выяснили...

Цитата(Leka @ Dec 11 2008, 20:58) *
задача о ферзях для доски N*N, критерий - максимальное N для времени счета не более 1 мин. Или 10 мин.

Не согласен. А как избавиться от оси? Она ж тормозить станет... результаты случайные получатся
SSerge
Кстати, о ферзях и различиях между С и Паскалем
Код
======== Г. С. Цейтин, Алгол-68
рrос Ферзи = (int k, proc(int, int) bool Можно, proc void Печать) void:
  if k = 8 then
    Печать
  else
    int p = k+1;
    for q to 8 do
      if Можно (p,q) then
        proc МожноHовое = (int x,y) bool:
          if у = q or x-p = abs(y-q) then
            false
          else
            Можно(x,y)
          fi;
        proc ПечатьHовое = void:
          (Печать; print((",", "abcdefgh"[p], "12345678"[q])));
        Ферзи(p, МожноHовое, ПечатьHовое)
      fi
    od
  fi;

proc МожноHачальное = (int x, y) bool: true;

proc ПечатьHачальная = void: print(newline);

Ферзи(О, МожноHачальное, ПечатьHачальная);
========
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.