Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

IEIEIEIO

Автор arseniiv, октября 30, 2010, 18:47

0 Пользователи и 1 гость просматривают эту тему.

myst

Цитата: Python от ноября  6, 2010, 23:41
Второй пример механически переделан из первого с использованием дополнительной переменной.
Почему в первом примере один цикл, а во втором цикл в цикле?

Demetrius

Цитата: myst от ноября  7, 2010, 07:32
Цитата: Python от ноября  6, 2010, 22:48
Видимо, идея состояла в том, чтобы интегрировать код, написанный ранее на фортране, в единый проект, рассчитанный на работу под  JVM.
Это как?
-1.
Понятно жеж: библиотека на фортране (скорее всего все функции оформляются как статические методы какого-то класса).

Другое дело, что это будет ужасно... И весь код с использованием этой библиотеки будет ужасен. Но - вполне осуществимо.

myst

Цитата: Demetrius от ноября  7, 2010, 07:42
Понятно жеж: библиотека на фортране (скорее всего все функции оформляются как статические методы какого-то класса).
Мне ничо не понятно. Они переписывать на жабу собрались или байндить? Во втором случае goto явно не нужен. А если переписывать, то нахрена, если есть трансляторы в байт-код?

addewyd

Да нормальный ие. а в лингворум оперой хожу. на хабр хромом. на льпари фф. тормозная она. но я тоже тормоз. мне лениво.

Drundia

Цитата: Python от октября 31, 2010, 23:54Если сайтоверстатель создает сайт, соответствующий современным стандартам, но неработоспособный на браузере, совместимом лишь на уровне html2, то как это называется?
А мой 5,25-дюймовый флоппик отказывается блю-рей-диски читать! Как это называется?

myst

Цитата: addewyd от ноября  7, 2010, 08:00
Да нормальный ие. а в лингворум оперой хожу. на хабр хромом. на льпари фф. тормозная она. но я тоже тормоз. мне лениво.
addewyd, не онтопьте. :)


addewyd


addewyd

Полгода там не появлялся.
Там интересно.
не хуже лингвофорума

Drundia

Цитата: myst от ноября  2, 2010, 19:12
Цитата: Python от ноября  2, 2010, 18:48
Хорошо, код был создан за минуту из готового примера открытия файла. Конечно, я мог бы создать полноценный класс, в нем статический метод, возвращающий объект Writer, готовый для перезаписи файла, затем определил макрос для доступа к этому методу, но зачем? Моей целью было лишь продемонстрировать возможность записи слишком длинного фрагмента кода с помощью макроса. В реальной программе я вряд ли стал бы использовать приведенный пример.
Эти Ваши слова ещё раз подтверждают, что Вы не понимаете всей пагубности того макроса. А ведь он как будто списан со страницы книги «Как нельзя писать макросы!». Я Вам советую попользоваться такими макросами всласть. Пишите их как можно больше, пользуйтесь ими при первой возможности. Для обучения нет ничего эффективнее  хорошего удара граблями по лбу.
А в плюсах такую хрень мы реализуем инлайновыми функциями.

Drundia

Цитата: Python от ноября  3, 2010, 01:06goto они тоже не добавили специально. Что сделало адаптацию сишного кода для джавы нетривиальной задачей.
Нас учили, что goto — плохая манера. Из вложенных циклов выходить дополнительными переменными, что, впрочем, показывает убогость языка, поэтому в PHP имеем просто аргумент к брейку.

myst

Цитата: Drundia от ноября  7, 2010, 08:31
А в плюсах такую хрень мы реализуем инлайновыми функциями.
Инлайнить должен компилятор, что он и делает.

Drundia

Цитата: Python от ноября  6, 2010, 10:20
Пример кода, в котором использование перехода я считаю оправданным:

procedure tgraptCharset.AddSymbolEncoding(code,charset, symbol,alphabet:string);
label add_symbol;
var i,j:integer;
    gs:graptstr;
begin
   //if encoding charset with such name does not exist then create it:
    for i:=0 to length(encodings)-1 do
if encodings[i].title=charset then goto add_symbol;
    i:=length(encodings);
    setlength(encodings,i+1);
    encodings[i].title:=charset;
    encodings[i].code:=nil;
    encodings[i].grapt32:=nil;
add_symbol:
   //prepare gs:
   gs:=fromGrapt7(grapt7prefixe+alphabet+grapt7delimiter+symbol);//gs:=gettranslit(symbol,alphabet);
   //add pair grapt32&code:
   j:=length(encodings[i].grapt32);
   setlength(encodings[i].grapt32,j+1);
   setlength(encodings[i].code,j+1);
   encodings[i].grapt32[j]:=gs;
   encodings[i].code[j]:=code;
end;


Написать по-нормальному религия не позволяет?


procedure tgraptCharset.AddSymbolEncoding(code,charset, symbol,alphabet:string);
label add_symbol;
var i,j:integer;
    gs:graptstr;
begin
   //if encoding charset with such name does not exist then create it:
    for i:=0 to length(encodings)-1 do
if encodings[i].title=charset then begin
   //prepare gs:
   gs:=fromGrapt7(grapt7prefixe+alphabet+grapt7delimiter+symbol);//gs:=gettranslit(symbol,alphabet);
   //add pair grapt32&code:
   j:=length(encodings[i].grapt32);
   setlength(encodings[i].grapt32,j+1);
   setlength(encodings[i].code,j+1);
   encodings[i].grapt32[j]:=gs;
   encodings[i].code[j]:=code;
end;
    i:=length(encodings);
    setlength(encodings,i+1);
    encodings[i].title:=charset;
    encodings[i].code:=nil;
    encodings[i].grapt32:=nil;
end;


PS: Подозреваю, что слегка запутался в вермишели...
PPS: Также подозреваю, что оба варианта не делают того, что от них требуется...

myst

Цитата: Drundia от ноября  7, 2010, 09:08
Написать по-нормальному религия не позволяет?
В Вашем коде ошибка: когда кодировки нет в списке, она добавляется, но символ в неё не добавляется.

Цитата: Drundia от ноября  7, 2010, 09:08
PS: Подозреваю, что слегка запутался в вермишели...
Угу. Но Python считает, что это образец качественного кода и оправданного goto. :)

Drundia

Цитата: myst от ноября  7, 2010, 09:12В Вашем коде ошибка: когда кодировки нет в списке, она добавляется, но символ в неё не добавляется.
Ну значит в нормальном языке мы бы туда return дописали.

myst

Цитата: Drundia от ноября  7, 2010, 09:08
PPS: Также подозреваю, что оба варианта не делают того, что от них требуется...
А вот это, хрен его знает. ;D

myst

Цитата: Drundia от ноября  7, 2010, 09:14
Ну значит в нормальном языке мы бы туда return дописали.
Куда туда? :what:

Drundia

Цитата: Python от ноября  6, 2010, 23:41Фе, вермишель!

   10 INPUT A,B,C
      IF(A=0 AND B=0 AND C=0) GOTO 50
      IF(A=0 OR  B=0 OR  C=0) GOTO 90
      S = (A + B + C) / 2.0
      AREA = SQRT( S * (S - A) * (S - B) * (S - C))
      PRINT A,B,C,AREA
      GOTO 10
   50 PRINT "Bye!"
      END
   90 PRINT "Error!"
      END

СтруктурностьЪ!

L=10
DO
   WHILE L=10
      INPUT A,B,C
      IF(A=0 AND B=0 AND C=0) THEN
         L=50
         EXIT WHILE
      END IF
      IF(A=0 OR  B=0 OR  C=0)  THEN
         L=90
      END IF
      IF L=10 THEN
         S = (A + B + C) / 2.0
         AREA = SQRT( S * (S - A) * (S - B) * (S - C))
         PRINT A,B,C,AREA
      END IF
  WEND
  IF L=50
      PRINT "Bye!"
      EXIT LOOP
  END IF
  IF L=90
      PRINT "Error!"
      EXIT LOOP
   END IF
LOOP

Моя в басиках не сильна, но на нормальном языке это пишется примерно так:


int main (void){
  double a,b,c,s,area;
  while (1){
    cin >> a >> b >> c;
    if (a==0.0 && b==0.0 && c==0.0){
      cout << "Bye!";
      return 0;
    }
    if (a==0.0 || b==0.0 || c==0.0){
      cout << "ЕГГОГ!!!";
      return 1;
    }
    s = (a+b+c)/2.0;
    area = sqrt(s*(s-a)*(s-b)*(s-c));
    cout << a << b << c << area;
  }
}


PS: Подозреваю, что в бейсике без лишнего цикла тоже так можно.

Drundia

Цитата: myst от ноября  7, 2010, 09:15
Цитата: Drundia от ноября  7, 2010, 09:14
Ну значит в нормальном языке мы бы туда return дописали.
Куда туда? :what:
После encodings.code[j]:=code; — там где в вермишельном коде конец функции, а в нормальном конец ифа.

myst

Цитата: Drundia от ноября  7, 2010, 09:28
После encodings.code[j]:=code; — там где в вермишельном коде конец функции, а в нормальном конец ифа.
Дык, это ничего не исправляет.

Код Python'а берёт кодировку из списка по имени; если кодировки с таким именем нет, добавляет новую кодировку в список; после чего добавляет символ кодировку. То есть символ в кодировку добавляется в любом случае. А в Ваш код добавляет символ только в существующую кодировку.

Drundia

Цитата: Python от ноября  3, 2010, 14:03
{
XXXX x = new XXXX(args);
l1:  if(x.a()) goto l2;
      if(x.b()) goto l3;
      goto end;
l2:  if(x.c()) goto l1;
      if(x.d()) goto l3;
      goto end;
l3:  if(x.e()) goto l1;
      if(x.f()) goto l2;
end:
}

Lua имеет такую крутую штуку, как tailcall.


function x.l1()
  if (x.a()) then return x.l2(); end;
  if (x.b()) then return x.l3(); end;
end;

function x.l2()
  if (x.c()) then return x.l1(); end;
  if (x.d()) then return x.l3(); end;
end;

function x.l3()
  if (x.e()) then return x.l1(); end;
  if (x.f()) then return x.l2(); end;
end;

x.l1();

addewyd


Drundia

Цитата: myst от ноября  7, 2010, 09:36
Цитата: Drundia от ноября  7, 2010, 09:28
После encodings.code[j]:=code; — там где в вермишельном коде конец функции, а в нормальном конец ифа.
Дык, это ничего не исправляет.

Код Python'а берёт кодировку из списка по имени; если кодировки с таким именем нет, добавляет новую кодировку в список; после чего добавляет символ кодировку. То есть символ в кодировку добавляется в любом случае. А в Ваш код добавляет символ только в существующую кодировку.
Вермишель, такая вермишель. Ладно, я вроде с десятого раза понял. Но так, конечно, нормальные люди не пишут, и вполне понятно, почему.

Надо добавить в мою функцию рекурсивный вызов самой себя после создания кодировки. А вообще, каждый раз искать кодировку по имени линейным поиском.....

Python

Цитата: myst от ноября  7, 2010, 07:36
Ваша проблема в том, что Вы недопонимаете концепцию модульности.
Вы, как всегда, излишне лаконичны.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

myst

Цитата: Python от ноября  7, 2010, 13:07
Цитата: myst от ноября  7, 2010, 07:36
Ваша проблема в том, что Вы недопонимаете концепцию модульности.
Вы, как всегда, излишне лаконичны.
Вы, как всегда, пренебрегаете RTFM'ом.

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр