Текущий архив: 2007.11.18;
Скачать: CL | DM;
Вниз
Массив - как организовать? (без array и на АПИ) Найти похожие ветки
← →
Юрий Зотов © (2007-10-26 11:24) [40]> Б. Гейтс (26.10.07 10:44) [31]
Короче, луxше всего сказал Вирт: программирование - это алгоритмы плюс структуры данных. Вот это Вам сейчас и нужно изучать - алгоритмы и структуры данных. Причем начинать со структур.
← →
Б. Гейтс (2007-10-26 12:47) [41]
> А если бы знали, что такое указатели и динамическая память
Указатели - знаю, дин. память - нет. Поподробнее плиз
Еще вопрос: что такое апи вообще? Разве это не ф-ции из длл?
> Таких не берут в программисты
Я пока новичок. Но шансов стать кодером у меня больше, не так ли?
← →
Сергей М. © (2007-10-26 12:53) [42]
> что такое апи вообще?
http://www.google.ru/search?complete=1&hl=ru&newwindow=1&client=firefox-a&rls=org.mozilla:ru:official&hs=UVf&defl=ru&q=define:API&sa=X&oi=glossary_defin ition&ct=title
> Разве это не ф-ции из длл?
Не обязательно.
← →
@!!ex © (2007-10-26 13:02) [43]
type
TArray = class
public
Constructor Create(OneItemSize:integer);
Destructor Destroy; override;
Procedure SetLength(NewLength:integer);
Function GetLength:integer;
Function GetItem(Index:integer):Pointer;
protected
FirstItem:Pointer;
Count:integer;
ItemSize:integer;
end;
Constructor TArray.Create(OneItemSize:integer);
begin
ItemSize:=OneItemSize;
end;
Destructor TArray.Destroy; override;
begin
FreeMem(FirstItem);
end;
Procedure TArray.SetLength(NewLength:integer);
begin
Count:=NewLength;
ReallocMem(FirstItem,Count*ItemSize);
end;
Function TArray.GetLength:integer;
begin
Result:=Count;
end;
Function TArray.GetItem(Index:integer):Pointer;
begin
Result:=Pointer(Integer(FirstItem)+(Index*ItemSize));
end;
Что-то типа такого. Сорри, если ошибок наделал, придумывал и писал прямо здесь.
← →
Ega23 © (2007-10-26 13:02) [44]
> Но шансов стать кодером у меня больше, не так ли?
Кодером - да, программистом - пока не вижу.
← →
@!!ex © (2007-10-26 13:07) [45]З.Ы.
забыл инхеритед в дестрое.
← →
Ins © (2007-10-26 13:08) [46]
> Еще вопрос: что такое апи вообще?
Сначала нужно понять что такое интерфейс. Интерфейс - это некая абстрактная прослойка, протокол, согласующий взаимодействие с объектом, то, что торчит наружу и позволяет управлять тем, что внутри. Например ножки микросхемы - типичный пример интерфейса. Сама логика находится внутри черного ящика, но нам предоставлен некий рычажок, дергая который можно изменять то, что находится внутри, при этом внутрь не залазить. API - это тоже интерфейс. Прослойка между пользовательским приложением и операционной системой, позволяющий из пользовательских программ производить манипуляции над системой. Win32API - подмножество API, представляет собой экспортируемые из библиотек функции, но только не нужно думать, что эти функции выполняют непосредственно требуемые действия над ОС. Это не так. Это именно интерфейсные функции, та самая прослойка, доступная из пользовательского приложения и передающая запрос на более низкий уровень, внутрь того самого черного ящика.
← →
Маша Шрайбер © (2007-10-26 14:36) [47]>> Б. Гейтс (26.10.07 12:47) [41]
>> Но шансов стать кодером у меня больше, не так ли?
Только шкодером. Но им вы уже стали.
← →
Б. Гейтс (2007-10-26 15:21) [48]Всем огромное спасибо!
Теперь я с массивами на "вы"
> @!!ex © (26.10.07 13:02) [43]
Спасибо за пример, проверю попозже, щас времени нет.
> Кодером - да, программистом - пока не вижу.
Стоит ли мне идти в программеры? У всех ведь ошибки бывают.
> Например ножки микросхемы - типичный пример интерфейса.
Все отлично понял! (это я так думаю)
Только не совсем понял отличие Win32API от API.
И динамическую память не понял.
Ааа!! Забыл! Я же еще не знаю, что такое страница памяти! (если это в тему)
Итог: многого не знаю.
← →
@!!ex © (2007-10-26 15:36) [49]> Только не совсем понял отличие Win32API от API.
Я пиуш на OPenGL API. Которое не имет НИКАКОГО отношения к WinAPI и Windows в частности. ОДнакто тоже явялется API.
← →
Ega23 © (2007-10-26 15:49) [50]
> Только не совсем понял отличие Win32API от API.
ANSI SQL - стандартизованное API для доступа к данным в СУБД
← →
barmaglo (2007-10-26 15:50) [51]Апи бывает не только вин....В линухе тоже есть Апи....Для опенГЛ и СаундБластера тоже есть апи....
Динамическая память, это выделение памяти во время выполнения программы, те же массивы изменяемого размера, списки и т.д.
Страница памяти....Не заморачивайся, на мой взгляд это интересно только виндовс, хотя может и ошибаюсь....
← →
Ins © (2007-10-26 16:00) [52]
> Апи бывает не только вин....В линухе тоже есть Апи....Для
> опенГЛ и СаундБластера тоже есть апи....
Можно еще про разные подсистемы (POSIX, OS/2) на базе Windows вспомнить, про NativeAPI - это тоже API, только не Win32. Да и вообще, API очень широкое понятие.
> Страница памяти....Не заморачивайся, на мой взгляд это интересно
> только виндовс, хотя может и ошибаюсь....
Ошибаетесь. Разбиение памяти на страницы поддержывается аппаратно процессором.
В общем, товарищу Гейтсу рекомендуется почитать книжки и найти ответы на свои вопросы.
← →
Ins © (2007-10-26 16:07) [53]
> Страница памяти....Не заморачивайся, на мой взгляд это интересно
> только виндовс, хотя может и ошибаюсь....
Неправильно понял фразу, сорри. Но все равно, лучше знать что такое страница памяти, иногда даже в "программировании на API" это требуется :)
← →
Б. Гейтс (2007-10-26 16:15) [54]
> "программировании на API" это требуется :)
Кхе-кхе... я только спросил.
← →
Galinka © (2007-10-26 21:43) [55]Юрий Зотов © (26.10.07 11:16) [38]
если человек в школе массивы проходил, то там редко говорят, как оно все устроено (( Просто говорят, что есть такая структура. Кроме того, не далее как сегодня, говорила с одним товарищем, который достаточно глубоко знает Си. Выполняет на нем достаточно нетривиальные проекты. Но когда я сказала. что понимание массивов невозможно без понимания указателей и адресации, он сказал, что это слишком сложно типа для первого понимания массивов. (Конечно с учетом известной нам аудитории).
← →
vpbar © (2007-10-26 22:31) [56]>>Galinka © (26.10.07 21:43) [55]
ИМХО человек прав. Для понимания как использовать хеши тоже нужно знать адресацию и указатели? Нет, по- моему не нужно.
Массив достаточно абстрактная весчь. Вот для реализации (иммитации) массивов на тех языках где его нет, приходится пользоваться указателями.
← →
Б. Гейтс (2007-10-27 08:45) [57]
> Массив достаточно абстрактная весчь. Вот для реализации
> (иммитации) массивов на тех языках где его нет, приходится
> пользоваться указателями.
Поэтому я попросил помощи у вас.
Всем огромное спасибо! Все реально помогли!
Что это за возвращаемое значение у функции GlobalAlloc? Т. е. хэндл чего? Я раньше думал, что хэндл бывает лишь у окон.
GlobalLock - возвращает указатель памяти, кот. я зарезервировал с помощью GlobalAlloc.
GlobalReAlloc - изменяет размер памяти. После этой функции следует ли еще раз вызывать GlobalLock?
Если я чего-то недопонимаю, объясните плиз..
← →
Юрий Зотов © (2007-10-28 06:55) [58]> Galinka © (26.10.07 21:43) [55]
Странный аргумент... человек высказал свое мнение, и только. Другой, не менее авторитетный человек с таким же успехом скажет обратное - и что? Это тоже аргумент?
Значицца, так... с учетом известной нам аудитории могу привести следующий факт (заметьте - не мнение там чье-то, а реальный факт, с коим не поспоришь).
Понятно, что к этой самой аудитории все мы когда-то принадлежали, и я в том числе. Так вот - эту самую нашу аудиторию, состоящую примерно из 20 человек тогдашних девятиклассников, обычных учеников обычной школы, учили программировать... напрямую в машинных кодах (!!!). А самое интересное, что не только учили, но и реально научили. И не избранных, а всех. И все прекрасно поняли, что такое команды, данные, адресация и все прочее.
Значит - можно? Значит, можно. И не слишком? И не слишком.
А Вы говорите - массивы...
:о)
← →
Галинка © (2007-10-28 22:31) [59]Юрий Зотов © (28.10.07 06:55) [58]
я бы наверное так тоже хотела. Тот же человек порекомендовал почаще смотреть в ассемблерный код отладчика. Но пока для меня там китайская грамота. Хотя Эклипс и выдает его весьма охотно. Будем грызть... )))
vpbar © (26.10.07 22:31) [56]
а для передачи массивов в качестве параметра функции? В тех языках, где нет класса array? Мне кажется именно поэтому то и дело возникают непонятки с указателями/ссылками/новыми типами указателей (в Си++, например). А еще есть понятие индексированный список... Крыша от этого изобилия поедет ((
← →
Zeqfreed (thief) (2007-10-28 23:40) [60]> Галинка © (28.10.07 22:31) [59]
От красно-черных деревьев, наверное, вообще мутнеет в глазах и шарики за ролики закатываются? :)
← →
vpbar © (2007-10-28 23:47) [61]>>Галинка © (28.10.07 22:31) [59]
>>а для передачи массивов в качестве параметра функции?
Если вы про указатели, то не нужны. Для понимания механизма, может быть. Но для понимания логики программы - совсем лишнее.
Это забота компилятора передать параметр наиболее оптимальным способом.
В тех языках где нет массива - (в lisp-е чтоли) - а есть указатели его можно эмулировать. Собственно я уже повторяюсь.
>>Крыша от этого изобилия поедет
А вы по полочкам раскладывайте.
← →
Zeqfreed © (2007-10-28 23:51) [62]> vpbar © (28.10.07 23:47) [61]
> Если вы про указатели, то не нужны.
> В тех языках где нет массива... ...есть
> указатели его можно эмулировать
Логика шикарная :)
← →
Юрий Зотов © (2007-10-29 00:10) [63]> Галинка © (28.10.07 22:31) [59]
Еще один реальный факт, с Вашего позволения. Когда моя дочь училась в третьем классе, собрали нас, родителей, и сказали - а давайте вести для ребят кружки, кто что умеет.
И выпало мне волею судеб вести кружок программирования. При условии, что ни одного компьютера в школе нет вообще. А программировать на бумаге... да ведь это же третий класс, они ж со скуки помрут моментально.
Что делать? Родилась идея - программируемые микрокалькуляторы. Они тогда были уже распространены, вот ребята и притащили, у кого в семье был. Десяток набралось, а больше и не надо - один на пару-тройку человек, вот их все ОК.
И стали мы учиться на этих машинках программировать. А там, понятное дело, сплошные коды да адреса, и ничего более. Как хочешь - так и объясняй. Третьеклассникам!
И что Вы думаете? Я обалдел - они все понимали!!! Они писали программы, они въехали в мнемонику и в коды команд, в регистры, в instruction pointer, в адреса и переходы, в прямую и косвенную адресацию... ТРЕТИЙ КЛАСС!!! Я ШИЗЕЛ!!!
Нет, я и правда шизел, когда клоп ростом со стол объяснял мне свою программу почти буквально в таких словах: "Здесь я сохраняю регистр X в ячейке памяти с адресом 4, потому что сейчас начнется ввод и регистр X будет затерт, а в нем находится адрес перехода, который понадобится на шаге 25 и поэтому его надо сохранить".
И ведь все правильно говорил, вот в чем главный фокус-то. Хотя, чего б ему и ошибаться, если эту программу он же сам и написал?
О как! А то - массивы...
:о)
← →
Virgo_Style © (2007-10-29 07:52) [64]Юрий Зотов © (29.10.07 0:10) [63]
Ну, тут и от учителя немало зависит, чтобы не сказать - почти все :-P
← →
Галинка © (2007-10-29 11:58) [65]Юрий Зотов © (29.10.07 00:10) [63]
хороший Вы учитель. У нас тоже такой был в школе. При нем мы и ассемблер учили. Но теперь уже все забыла наверное...
← →
Ins © (2007-10-29 12:45) [66]
> Юрий Зотов © (29.10.07 00:10) [63]
Браво! Однажды сам наблюдал, как далеко не трезвый мужчина в купе поезда научил 3-летнего ребенка читать, несмотря на всяческие попытки мамы ребенка сопротивляться, но это, пожалуй, даже круче. Не каждому преподавателю дано... Детям очень повезло.
Страницы: 1 2 вся ветка
Текущий архив: 2007.11.18;
Скачать: CL | DM;
Память: 0.62 MB
Время: 0.031 c