Forth http://fforum.winglion.ru/ |
|
Что такое форматированный вывод и какой может быть в FORTH'е http://fforum.winglion.ru/viewtopic.php?f=9&t=2069 |
Страница 7 из 7 |
Автор: | вопрос [ Вт май 17, 2011 12:27 ] |
Заголовок сообщения: | Re: Что такое форматированный вывод и какой может быть в FOR |
вот какой-то очень уж урезанный форматный вывод обнаружил на forth.org.ru http://spf.cvs.sourceforge.net/spf/deve ... ib/print.f ( <- смайлик) |
Автор: | dynamic-wind [ Вт май 17, 2011 12:45 ] |
Заголовок сообщения: | Re: Что такое форматированный вывод и какой может быть в FOR |
Можно определить хоть мильён преобразователей величины в строку. Проблема в их комбинировании, ведь каждое оставляет строку на стеке. А хотелось бы иметь комбинатор из левой и правой скобок: Код: <" %d " -й тазик содержит: " %f %s "> Целое, действительное и строка снимутся со стека. На выходе должна быть конкатенация константных строк и строк, выданных отдельными преобразователями %d и др. Как такое сделать на ф-те? |
Автор: | вопрос [ Вт май 17, 2011 12:49 ] |
Заголовок сообщения: | Re: Что такое форматированный вывод и какой может быть в FOR |
там выше есть некоторый набросок |
Автор: | dynamic-wind [ Вт май 17, 2011 12:52 ] |
Заголовок сообщения: | Re: Что такое форматированный вывод и какой может быть в FOR |
вопрос писал(а): там выше есть некоторый набросок expand$ с квадратичным поведением меня особенно порадовал И это не комбинатор. |
Автор: | вопрос [ Вт май 17, 2011 13:10 ] |
Заголовок сообщения: | Re: Что такое форматированный вывод и какой может быть в FOR |
я имел ввиду в теме - на второй странице |
Автор: | dynamic-wind [ Вт май 17, 2011 14:02 ] |
Заголовок сообщения: | Re: Что такое форматированный вывод и какой может быть в FOR |
вопрос писал(а): я имел ввиду в теме - на второй странице А мне чё-то показалось, что тема начинается на этой странице. |
Автор: | mOleg [ Вт май 17, 2011 20:24 ] |
Заголовок сообщения: | Re: Что такое форматированный вывод и какой может быть в FOR |
dynamic-wind писал(а): А хотелось бы иметь комбинатор из левой и правой скобок: Код: <" %d " -й тазик содержит: " %f %s "> ну и в чем проблема? Кстати, как вариант, можно посмотреть на str5.f |
Автор: | Ethereal [ Сб июл 02, 2011 23:24 ] |
Заголовок сообщения: | Re: |
вопрос писал(а): Насчёт изучения - так отладка в С при изучении всё-равно была быстрее намного чем при изучении форта - за счёт наличия стандартных возможностей, которые в форте кто-то поленился сделать вопрос писал(а): стандартизированные средства вывода в различных форматах с сопровождающим комментарием, причём - перемещаемо, т.к. одна строка и т.д. В каком смысле здесь употреблено слово перемещаемо ? Легко перемещаемо вверх-вниз по тексту программы ? Дык а разве твой любимый редактор не позволяет гонять вверх-вниз целые блоки теста ? В редакторе FAR-а такие перемещения делаются молниеносно : Shift-стрелки/Home/End Del курсор_на_новое_место Shift-Ins Например такой кусок для вывода промежуточных значений (переменных XXX и YYY) при отладке : ." DEPTH=" DECIMAL DEPTH . CR ." XXX=" XXX @ . ." YYY=" HEX YYY @ U. CR гоняешь вверх-вниз по тексту программы и отлаживаешь. Вот как-то делается отладка легко и просто без форматного вывода. А еще можно безо всякого вывода промежуточных результатов просто поставить в форт-программе точку останова DEPTH . QUIT после срабатывания которой можно он-лайн (вводя команды с клавиатуры) поразглядывать все интересующие переменные, например DECIMAL XXX @ . HEX YYY @ U. ARRAY 100 DUMP Форт - это-же готовый отладчик, зачем улучшать там, где все средства отладки уже есть ? Ставишь бряк-пойнт где надо и потом разглядываешь что интересует. В Си ничего подобного нет. Там отладка кроме вывода промежуточных значений только отдельным отладчиком и в кодах процессора. |
Автор: | вопрос [ Сб июл 02, 2011 23:56 ] |
Заголовок сообщения: | Re: Что такое форматированный вывод и какой может быть в FOR |
Цитата: Форт - это-же готовый отладчик, зачем улучшать там, где все средства отладки уже есть ? Ставишь бряк-пойнт где надо и потом разглядываешь что интересует. В Си ничего подобного нет. Там отладка кроме вывода промежуточных значений только отдельным отладчиком и в кодах процессора. Вот недурно бы рассказать о дополнительных возможностях тем, кто не видит смысла в Алгоритмическая ниша? Ethereal писал(а): Вот как-то делается отладка легко и просто без форматного вывода. дело вкуса, не спорю, мне помогал даже этот незаконченный форматный вывод довольно неслабо при отладке (ещё добавил в него цветность и окна подобно как в борланде было) |
Автор: | Ethereal [ Вс июл 03, 2011 00:06 ] |
Заголовок сообщения: | Re: |
вопрос писал(а): 10 BASE ! Эта строчка НИКОГДА НЕ ИЗМЕНИТ системы счисления !!!Пиши вместо неё DECIMAL |
Автор: | вопрос [ Вс июл 03, 2011 00:13 ] |
Заголовок сообщения: | Re: Что такое форматированный вывод и какой может быть в FOR |
Ethereal писал(а): Эта строчка НИКОГДА НЕ ИЗМЕНИТ системы счисления !!!Пиши вместо неё DECIMAL я был ещё очень начинающим, как всё-таки относительно "Алгоритмическая ниша?" |
Автор: | mOleg [ Вс июл 03, 2011 09:37 ] |
Заголовок сообщения: | Re: Что такое форматированный вывод и какой может быть в FOR |
Ethereal писал(а): вопрос писал(а): 10 BASE ! Эта строчка НИКОГДА НЕ ИЗМЕНИТ системы счисления !!! Пиши вместо неё DECIMAL ой, это надо в другую рубрику, там где про "фортеры шутят" |
Автор: | HughAguilar [ Пн дек 19, 2016 09:11 ] |
Заголовок сообщения: | Re: |
вопрос писал(а): Как это сделано, например в С Я думаю, все хорошо знают, как это сделано в С Стандартный пример из Керниган, Ричи. Язык C Цитата: 7.3. Форматный вывод - функция PRINTF I didn't read all of this thread. I just noticed this mention of C's PRINTF function. I have always considered PRINTF to be a bad idea --- this is essentially a miniature language that is being interpreted at run-time --- so, why do the C programmers say that Forth is an interpreted language when C is actually interpreted? Quite a lot can be done with <# # #> etc. --- and, this compiles into machine-code --- it is not a mark-up language that gets interpreted at run-time like the PRINTF uses. The subject of formatted output of floating-point numbers was recently discussed on comp.lang.forth: https://groups.google.com/forum/#!topic ... GAKvs8baQk For many years, my novice package has supported the output of floating point in both scientific and engineering formats. Here are some examples: Код: 123456789123456.789e ok F:-1 fdup engineering type 123.45679e12 ok F:-1 fdup scientific type 1.2345679e14 ok F:-1 1234.56789e engineering type 1.2345679e3 ok 123.456789e engineering type 123.45679 ok 12.3456789e engineering type 12.345679 ok 1.23456789e engineering type 1.2345679 ok .123456789e engineering type 123.45679e-3 ok .0123456789e engineering type 12.345679e-3 ok .00123456789e engineering type 1.2345679e-3 ok .000123456789e engineering type 123.45679e-6 ok 2000000000.0001e ok F:-1 eng type 2,000,000,000.0001 ok 2000000001.0001e ok F:-1 eng type 2e9 ok 2000000000.000123456789e ok F:-1 eng type 7,751,640.03949188 ok \ this is a bug in VFX --- F. doesn't work either 2000000000.0001e ok F:-1 eng type 2,000,000,000.0001 ok 2000000.0001234567e ok F:-1 eng type 2,000,000.00012346 ok 0.0e ok F:-1 eng type 0 ok -0.0e ok F:-1 eng type 0 ok -0.0001e ok F:-1 eng type -100e-6 ok I also have, in my STRING-STACK.4TH package, code to convert strings into numbers. This is the documentation: Код: \ STR>INT converts strings to integers, either singles and doubles.
\ An integer is a string of digits. There may be commas throughout. \ An integer may have a $ # or % at the front, signifying that it is hexadecimal, decimal or binary. If none of these are present, then BASE is used. \ An integer may have a + or - at the front (after the base signifier if there is one), signifying non-negative or negative, but otherwise it is non-negative. \ A comma at the beginning (after the sign signifier if there is one) signifies that the integer is a double, but otherwise it is a single. \ These are valid integers: \ $-,123,456 double: -123456 hexadecimal \ -,123,456 double: -123456 \ ,123,456 double: 123456 \ 123,456 single: 123456 \ STR>FLT converts strings to floats. \ A float is a string of digits. There may be commas throughout. All floats are in decimal. \ A comma in the front is legal but should not be used as STR>NUM will interpret this as an invalid double. \ There must be either a decimal-point or an exponent-signifier (either 'E' or 'e') or both. \ If there is a decimal-point, there must be digits either before or after or both. \ The first digits are the integer part. The digits after the decimal-point, if there is a decimal-point, are the fraction part. \ The digits after the exponent-signifier, if there is an exponent-signifier, are the exponent part (scientific notation). \ If there is an exponent-signifier, there must be digits after it. \ An exponent may have a + or - at the front, signifying non-negative or negative, but otherwise it is non-negative. \ STR>NUM converts strings to either integers or floats. \ These are valid floats: \ -123,456.78 float: -123456.78 \ -123,456.78E4 float: -1234567800 \ -123,456.78E-4 float: -12.345678 \ 123E4 float: 1230000 |
Автор: | mOleg [ Пн дек 19, 2016 18:54 ] |
Заголовок сообщения: | Re: Что такое форматированный вывод и какой может быть в FOR |
HughAguilar писал(а): so, why do the C programmers say that Forth is an interpreted language when C is actually interpreted? :)) I like anoter way ONLY FORTH ALSO NUMBERS ... but, may be ALSO DECIMAL some funny? anyway, NUMBERS - is vocabulary description |
Автор: | HughAguilar [ Пн дек 19, 2016 22:25 ] |
Заголовок сообщения: | Re: Re: |
HughAguilar писал(а): Here are some examples: Код: 123456789123456.789e ok F:-1 fdup engineering type 123.45679e12 ok F:-1 fdup scientific type 1.2345679e14 ok F:-1 1234.56789e engineering type 1.2345679e3 ok 123.456789e engineering type 123.45679 ok 12.3456789e engineering type 12.345679 ok 1.23456789e engineering type 1.2345679 ok .123456789e engineering type 123.45679e-3 ok .0123456789e engineering type 12.345679e-3 ok .00123456789e engineering type 1.2345679e-3 ok .000123456789e engineering type 123.45679e-6 ok 2000000000.0001e ok F:-1 eng type 2,000,000,000.0001 ok 2000000001.0001e ok F:-1 eng type 2e9 ok 2000000000.000123456789e ok F:-1 eng type 7,751,640.03949188 ok \ this is a bug in VFX --- F. doesn't work either 2000000000.0001e ok F:-1 eng type 2,000,000,000.0001 ok 2000000.0001234567e ok F:-1 eng type 2,000,000.00012346 ok 0.0e ok F:-1 eng type 0 ok -0.0e ok F:-1 eng type 0 ok -0.0001e ok F:-1 eng type -100e-6 ok When I quote my post, I get the original text --- when I look at it on the forum though, I see my code translated into Russian and back into English, so it is all nonsense. I would have expected a CODE section to be left verbatim. |
Страница 7 из 7 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |