Ну зачем сразу выход? Впринципе проверку на нуль надо делать только в операции деления... (ну если всего только 4 операции). И еще, если решишь сделать что-то круче (что будет теоретически долго считать), используй другие вещественные типы, они в 1,5 раза быстрее работают. Даже почти в 2. Это я доказывал, если интересно, загляни в прикрепленную тему об ускорении работы программ.
suriv
5.11.2004 17:39
Хмм пишу
program l; uses crt; begin sound(120); delay(60); nosound; readln; end.
И нифига не пищит
Как надо делать?
volvo
5.11.2004 17:43
suriv
Ты бы Delay увеличил ... хотя бы до 5000...
Altair
5.11.2004 17:45
даи частоту звука.... а то кряхтеть будет )
suriv
5.11.2004 17:47
program l; uses crt; begin sound(120); delay(9999); nosound; readln; end.
Нифига не работает
delay и 5000 и 999 2400 нифига
volvo
5.11.2004 17:52
Попробуй :
program l; uses crt; begin sound(1200); delay(10000); nosound; readln; end.
Altair
5.11.2004 17:53
А у тебя системный спикер (как в госдуме спикер ЛОЛ) есть?
suriv
5.11.2004 17:54
Блин напишите как шоб был красивый чистый (хотя чистым он никогда не будет) звук. Кокда биос загружается(В смысле комп врубаю) он пищит а как пишу так он зараза пищать не хочет.
Добавлено (5.11.04 14:16): Вот многие говорят: типа использовать goto неправильно и нерационально. чем же эт непавильно.
Altair
5.11.2004 18:31
Цитата
Вот многие говорят:типа использовать goto неправильно и нерационально.
Нифига подобного Гото просто запрещен в рамках ООП. Но так это очень быстрая конструкция,а циклы на его основе супер быстры, и по скорости такие-же как и wile. К тому же оператор гото, как всегда говорит Сквозной, философская конструкция Вобщем испольуй если надо, но не показывай никому А так, математически доказанно, что без него можно обойтись..
suriv
5.11.2004 18:58
Блин Ещё одна хрень пишу в BP7:
program l; uses crt; begin sound(1200); delay(5000); nosound; readln; end.
Пишет 'Division by zero' Ну я поменял turbo.tpl но всё равно вылезает ошибка.
Добавлено: ээй это ведь из-за того что turbo.tpl старый или что
Altair
5.11.2004 20:00
Да именно. Из-за этого.
Digitalator
5.11.2004 22:43
Goto пакость совершенная - что называется ни рыба ни мясо. Если мы пишем на паскале, то это должен быть четкий, понятный и строгоструктурированный код, а используя goto мы все эти прелести испортим. Если мы гонимся за скоростью и у нас оптимизацомания, то пишем asm, а за ним хоть jmp, хоть jn или jne, и на каждый бит регистра флагов по два собственных jmp найдется...
xds
5.11.2004 22:54
Применение goto оправдано при выходе из нескольких вложенных циклов:
for i := 1 to n do for j := 1 to m do if a[i, j] = x then begin Writeln('Found.'); goto Done; end; Writeln('Not found.'); Done:
Digitalator
5.11.2004 23:02
неоправдано, то же самое:
Код
exit:=false; i:=1; j:=1; while not(exit) do begin if a[i,j] = x then begin writeln('Found. '); exit:=true; end else begin inc(j); if j>m then begin j:=1; inc(i) if i>n then begin writeln('No found'); exit:=true; end; end; end; end;
и не надо говорить что с goto код короче и т.д. и т.п. мы пишем на структурированом, а не суррогатном языке
xds
6.11.2004 7:12
Цитата(Digitalator @ 5.11.04 19:02)
мы пишем на структурированом, а не суррогатном языке
Мы пишем не только примеры для статей и книжек, но еще и практически используемые приложения.
P. S. Структурированность... Сравним время, необходимое человеку для анализа семантики первого и второго вариантов кода...
P.P.S. А что же такое "суррогатный язык"? ;)
Altair
6.11.2004 11:01
Цитата
Сравним время, необходимое человеку для анализа семантики первого и второго вариантов кода...
Вот-вот... между прочим, в некоторых книгах советуют использовать гото, елси от этого улучшится читаемость кода..
Цитата
Мы пишем не только примеры для статей и книжек, но еще и практически используемые приложения.
Вот в том-то и дело... иногда получается, что куча циклов, сильно тормозящих работу, можно убрать а использовать ГОТО.
ЗЫ: хотя я сам не пользуюсь, гото, однако вижу в нем и положительные моменты...
Dark
6.11.2004 15:10
гото - конструкция, интегрируемая из асма
А не советуют ее применять идеологи ГРАМОТНОГО ПРОГРАММИРОВАНИЯ =)
Altair
6.11.2004 21:10
xds
7.11.2004 5:02
Цитата
гото - конструкция, интегрируемая из асма
О, боже!..
Цитата
А не советуют ее применять идеологи ГРАМОТНОГО ПРОГРАММИРОВАНИЯ =)
Я нарушил великую заповедь. Каюсь!
Digitalator
8.11.2004 5:05
Я уже писал - если у нас оптимизацомания, то пишем на асме, а если нет - то берем пас без всяких goto и пишем нормальную прогу. Если че современные процы с их архитектурой оптимизировны под языки высокого уровня, и их алгоритмы предсказания и конвейеры работают куда быстрее без дополнительных, не предусмотренных структурой языка, джампов.
Цитата
А что же такое "суррогатный язык"?
Вы не знаете что значит слово суррогат?
Цитата
Мы пишем не только примеры для статей и книжек, но еще и практически используемые приложения.
И что из этого? скажите пжлста какие вы написали практически используемые приложения, в которых использование goto было большим облегчением работы? Я вообще не вижу чем структурированый код сложнее для написания и понимания, кода с goto.... а если вы пишите большие циклы/условия большой вложености, то ипользование goto будем нарушать видимую структуру. Если вам так уж нужно сделать какой-то сверх-сложный и запутаный алгоритм, то можете использовать case-структурное програмирование без всяких goto
Altair
8.11.2004 16:57
В принципе я согласен с Digitalator, видимо у него есть опыт написания больших систем, чего нет скажем у меня еще...
APAL
8.11.2004 17:02
Digitalator
Цитата
...современные процы с их архитектурой оптимизировны под языки высокого уровня...
Ничего не путаешь? Может все таки "низкого уровня"? <_< Никогда не слышал, чтобы процы были оптимизированы под Паскаль или C...
Altair
8.11.2004 17:11
наверное он имеет ввиду,ч то современные процы умеют предсказывать ветвления и делать прочую предобработку...
APAL
8.11.2004 17:19
Это "предсказание" используется не только в современных процах. Это было с самого начала. Если не ошибаюсь, в архитектуре CISC+RISC процов .... надо попробовать старые конспекты найти...
К тому же, считаю это бредом про оптимизацию для высокоуровневых языков. Это утверждение было бы более правильным по отношению к компиляторам, которые и переводят все в машинный код.
Altair
8.11.2004 17:27
Хм.... ну вобщем конечно оптимизация под высокий уровень ... <_<
это что-то не то. Ведь команды языка высокого уровня это набор команд низкого и компиляторы все по разному переводят их ... так что возможно он не прави в этом..
xds
8.11.2004 20:44
Цитата
Никогда не слышал, чтобы процы были оптимизированы под Паскаль или C...
Такая ситуация наблюдалась в конце 70-х - начале 80-х годов XX века. Например в процессорах мини-ЭВМ семейства VAX от DEC одной инструкцией были реализованы не только пролог функции и копирование строки символов, но и операции с односвязным списком. Вот пример одной из команд этой архитектуры: INDEX <b>, <l>, <h>, <s>, <i>, <a> - вычисление адреса элемента массива (<b> - адрес массива, <l> и <h> - границы индекса, <s> - размер элемента, <i> - индекс элемента, <a> - место, куда будет помещён результат). Операции С "++" и "--" - не что иное, как режим адресации с инкрементом/декрементом - характерная черта системы команд PDP (именно на этой архитектуре родился указанный язык). Для такого подхода существовали вестские причины: дело было на заре теории трансляции, недостаток вычислительных мощностей не позволял реализовывать достаточно гибкие алгоритмы оптимизации. Желание помочь разработчикам компиляторов было оправдано. Сегодня мы имеем ситуацию, противоположную указанной. Производители процессоров не стремятся "заточить" систему команд под ЯВУ: задача оптимизации генерируемого кода практически полностью перешла в руки разработчиков компиляторов. В x86 только две инструкции были добавлены исключительно на благо ЯВУ: это ENTER и LEAVE (пролог и эпилог, функции; ни та, ни другая не используются в BP). Современные аппаратные средства оптимизации расcчитаны на повышение эффективности выполнения произвольного (в смысле источника генерации, но не семантики) кода.
APAL
8.11.2004 20:53
Т.е. о "современных процах" речь даже не идет... Так что же имел в виду Digitalator ???
Digitalator
9.11.2004 2:08
На самом деле именно языки Паскаль, Си и им подобные я и имел ввиду... Если посмотреть повнимательней, то на выходе компиллятора структурный код if, while, case и т.д. почти идентичны (ну одна фирма делает как никак), современные процессоры Intel P3/4 или AMD k7 имеют сложные и большое количество конвейров и алгоритмы предсказания ветвлений, а т.к. последние много лет разработка приложений ведется в основном на Си и Паскале, их алгоритмы предсказания улучшались в соответсвии и с ними.
PS: Еще одна мысль про гото: при использование этой штуки, наша программа/подпрограмма перестает быть функцией в математическом понимании.
Digitalator
9.11.2004 2:19
Вот что в институте проходят по этому поводу
Цитата
Цель курса - дать представление об различных подходах, используемых при создании современных ЭВМ. Основное внимание уделяется традиционным архитектурам (CISC и RISC). Рассматриваются взаимосвязи архитектуры и компиляторов языков высокого уровня.
Rothmans
10.11.2004 7:08
Если рассматривать программу вцелом, то применение локального GOTO оставит её функцией. Любой цикл - комбинация GOTO и IF (jz например). Явный переход иногда полезен при отладке. Но даже в BASIC для красоты стараются делать GOSUB. А программирование, для многих - эстетическое наслаждение.
Под языки высокого уровня оптимизируются не процессоры, а компиляторы. Та же Intel их регулярно выпускает.
i:=0;j:=0; repeat Inc(i); repeat Inc(j); until (a[i,j]=x) or (j:=m); until (a[i,j]=x) or (i:=n); if a[i,j]=x then writeln('Found') else writeln('Not found');
и, вроде, не длинно.
Rothmans
10.11.2004 7:10
Sorry, ошибочка. Под until не :=, а = конечно.
volvo
10.11.2004 7:16
Rothmans
А кнопка "Редактировать" зачем? :D
Rothmans
10.11.2004 18:23
Любую задачу можно решить разными путями. "Редактировать" вовремя не заметил, поэтому выпустил патч.
Digitalator
18.11.2004 5:34
попробуйте записать с помощью обычных математических записей функцию содержащую goto. Без него любую функцию можжно представить конечным числом математических выражений.
ЗЫ: j перед вторым repeat-ом обнулять нада
Atos
18.11.2004 17:16
Цитата(xds @ 5.11.04 15:54)
Применение goto оправдано при выходе из нескольких вложенных циклов:
for i := 1 to n do for j := 1 to m do if a[i, j] = x then begin Writeln('Found.'); goto Done; end; Writeln('Not found.'); Done:
OK:=false; i:=0; repeat inc(i); j:=0; repeat inc(j); OK:=(a[i,j]=x); until OK or (j=m); until OK or (i=n);
if OK then writeln('found.') else writeln('Not found.');
Имхо, примерно то же самое и по размеру, и по читабельности... В принципе, в таких простых случаях можно и goto ставить, если уж так нравится.
GoodWind
19.11.2004 0:48
ИМХО паскаль программа с goto - уже Бейсик-программа
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.