HLFX.Ru Forum Страницы (3): [1] 2 3 »
Показать все 35 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- переписать на С? (https://hlfx.ru/forum/showthread.php?threadid=3886)


Отправлено thambs 24-04-2013 в 19:47:

переписать на С?

в связи с тем что в gfortran обнаружился на редкость идиотский баг, g95 не хочет линковать модули от plplot'а, а триал ifort'а требует анальной регистрации, уже подумываю переписать свои наработки на C (не смотря на боль). в общем, посоветуйте справочник по переходу.
ну и сразу задам вопросы, что бы знать стоит ли игра свеч:

1)производные типы данных есть только в ++ или и в чистом C?
2)массивы всегда начинаются с нуля, или можно зааллокатить произвольные границы?
3)есть ли такое понятие как вырезка массива?
4)в фортране есть такая удобная штука -- contains блок: размещённые внутри этого блока функции и подпрограммы имеют доступ ко всей памяти родительского блока. в C что ни будь аналогичное есть?
5)как работать со строками, есть какой ни будь аналог write или format'а?

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Дядя Миша 24-04-2013 в 21:02:

для строк есть sprintf
массивы всегда начинаются с нуля.
производные типы данных только в С++
что такое вырезка массива?
contains block? не, не слышал

Следует понимать, что чистый Си минимально отрывается от реального положения дел: что напишешь, то и будет выполняться.
Практически во всех остальных языках полно неочевидных конструкций, существующих только на этапе компиляции. В других языках этот слой абстракции за каким-то чортом существует и в исполняемой программе, но это скорее удел виртуальных машинок, а таковыми я считаю все языки, со встроенным сборщиком мусора, хоть Ксерокс и Тот Кого Я Учил Брить со мной не согласятся

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Cybermax 24-04-2013 в 21:04:

Ничерта не понял, удачи тебе мужик!

__________________


Отправлено Дядя Миша 24-04-2013 в 21:08:

А хотя. Я тут терминологию перечитал. Есть производные типы данных в Си, кроме классов, разумеется. Но практически любой класс может быть описан структурой и неким набором функций, с заранее обговоренным нейм-спейсом.
Т.е. в С++ мы бы писали

C++ Source Code:
1
MyClass :: Set( int value )
2
{
3
  m_iValue = value;
4
}

а в чистом Си
C++ Source Code:
1
MyClass_Set( mystruct_t *p, int value )
2
{
3
  p->m_iValue = value;
4
}

Если учесть, что после компиляциии в С++ все классы развернутся в нечто аналогичное, только автоматически, то разница не так уж велика.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено thambs 24-04-2013 в 21:32:

>что такое вырезка массива?

ну например M(1:9:3) -- будет выглядеть как массив из элементов массива M от начиная с 1го, до 9 с шагом 3

>[i]contains block? не, не слышал


хмм ну это так

program main
[описание переменных]
[тело программы]
contains
[subroutine()]
[function[]] -- все функции и подпрограммы внутри этогоо contains'а имеют доступ ко всем переменным из main
endprogram

>минимально отрывается от реального положения дел
ну вот фортран тоже, но блин такая беда с компилятором просто угнетает

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено nemyax 24-04-2013 в 21:33:

Цитата:
Дядя Миша писал:
что такое вырезка массива?

Наверно, как в петоне срез списка:
list1[3:10]
list2[16:]
list3[:]


Отправлено thambs 24-04-2013 в 21:37:

>Но практически любой класс может быть описан структурой и неким набором функций, с заранее обговоренным нейм-спейсом.

ага, вроде понял. т.е. это аналог интерфейсного блока.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено XaeroX 25-04-2013 в 03:43:

Есть мнение (и не только моё), что нужно переписать на си весь код, написанный на фортране, после чего стереть все существующие в мире копии g77/g95/ifort, включая исходники и мануалы, сжечь книги по ним и пристрелить наиболее йаростных адептов этого языка.

__________________

xaerox on Vivino


Отправлено marikcool 25-04-2013 в 04:57:

Нафиг тройные масивы тебе, оберни все класами в плюсах и все быстро сделаешь.

__________________
vk.com/skullcapstudios


Отправлено KiQ 25-04-2013 в 06:20:

thambs если я правильно понял, вырезку массивов можно сделать через for:

C++ Source Code:
1
int[10] array1;
2
int[5] array2;
3
 
4
for (int i = 0; i < 10; i += 2) {
5
  array2[i >> 1] = array1[i];
6
}

__________________
-Brain is dead-


Отправлено XaeroX 25-04-2013 в 06:34:

KiQ
Если не секрет, кто научил тебя строить циклы таким образом?
Почему не цикл от 0 до 5 с адресацией вида array1[i*2]?

__________________

xaerox on Vivino


Отправлено KiQ 25-04-2013 в 06:53:

XaeroX да это я в лоб сделал эмуляцию этой вырезки

__________________
-Brain is dead-


Отправлено XaeroX 25-04-2013 в 09:46:

KiQ
Просто странно, решение "в лоб" через операторы сдвига.

__________________

xaerox on Vivino


Отправлено KiQ 25-04-2013 в 10:32:

XaeroX для скорости же. Умножение тоже можно заменить на <<1

__________________
-Brain is dead-


Отправлено XaeroX 25-04-2013 в 11:12:

KiQ
Я не спрашиваю, зачем заменять деление на сдвиг, это знает даже ребёнок.
Я спрашиваю, зачем строить цикл так, что при адресации нужно выполнять сдвиг (или деление) вместо потенциального "бесплатного" умножения, выполняемого самой командой mov?
Ладно, это риторический вопрос. В очередной раз убедился, до чего ява и сишарп довели народ. Никто уже и не задумывается, как компьютер выполняет программу. Зато как заменить умножение на сдвиг - это все бегом делают. Двойные стандарты...

__________________

xaerox on Vivino


Временная зона GMT. Текущее время 04:36. Страницы (3): [1] 2 3 »
Показать все 35 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024