Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Решил поучиться программированию. С чего начать?

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

Открыть новую тему     Написать ответ в эту тему

XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
spreak
Для начала я бы советовал определиться с книжками, а потом искать соответствующий пакет. Поскольку потом проще будет с написанным в книжках разбираться. В принципе, вроде наиболее популярным является MASM, но, например, Пирогов в своих книжках опирается на TASM, хотя и говорит, что лучший все же NASM. Может он и лучший, но инфы по нему найти довольно сложно. А книжки - это в соответствующий раздел форума, eBookz

Всего записей: 2505 | Зарегистр. 21-06-2005 | Отправлено: 00:17 14-08-2007
dmka



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
spreak
NASM
http://sourceforge.net/projects/nasm
 
MASM (также идет в комплекте с M$ Visual Studio)
http://www.microsoft.com
 
Книжки особо читать не стоит, в сети есть ресурсы гораздо интереснее.
 
Ну и мануалы к процессорам рулят:
http://www.intel.com/products/processor/manuals/index.htm
http://developer.amd.com/devguides.jsp
 
P.S. borland suxx

Всего записей: 956 | Зарегистр. 23-04-2003 | Отправлено: 01:15 14-08-2007 | Исправлено: dmka, 01:18 14-08-2007
cosmosliva



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день
 
только начинаю и поэтому прошу помочь разобраться
как грамотно работать со списками объектов?
 
Задача:
создаю объект
в конструкторе этого объекта
добавляю его в список
далее уже в конструкторе списка еще в один список
 
дак вот насколько правильно такие действия
 
есть сомнения(вопросы):
1. может надо наоборот с наружнего списка - опускаться вниз к объекту
1.а) без особой разницы что вниз что вверх идти  
2. или поменять структуру объектов и их связи со списком
 
к примеру:
имеем базовый класс: А
от него дочки:       B
класс списка:        С
класс списка2:       D
 
создаем объекты класса В
помещаем в список С как объекты типа А
далее помещаем в список D объекты С
 
С уважением!

Всего записей: 46 | Зарегистр. 09-10-2003 | Отправлено: 21:43 10-09-2007
Mickey_from_nsk

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cosmosliva
Чего-то я не уверен, что заносить себя в список в конструкторе - хороший тон. Конструктор - он по определению для КОНСТРУИРОВАНИЯ объекта. Создай объект, потом уже заноси его в список. Иначе - какая-нибудь кака с памятью или еще откуда исключение вылезет, так у тебя объект полусозданным и останется.

Всего записей: 636 | Зарегистр. 21-10-2002 | Отправлено: 07:26 11-09-2007
cosmosliva



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mickey_from_nsk
вот и у меня сомнения закрались
 
а по восходящей думал удти  
потому что на первый взгляд наглядно показалось
создаем объект - один раз програмируем что он сразу заноситься и/или добавляется в соответствующий список

Всего записей: 46 | Зарегистр. 09-10-2003 | Отправлено: 12:43 11-09-2007
Qraizer



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
cosmosliva
Цитата:
создаем объект - один раз програмируем что он сразу заноситься и/или добавляется в соответствующий список
Это хорошо, что закрались. Значит проектирование неосознанно, но тем не менее тобою учитывается. Многие не достаточно ещё опытные программисты считают, что главное - это рабочий код, а его архитектура - дело вторичное. Mickey_from_nsk правильно говорит. От конструктора требуется создать работоспособный объект. Не более, чем. Всё остальное не его задача. Когда создаётся объект, изначально его сторадж заполнен мусором (исключая глобальные объекты, но это частность и наследие C). Поэтому никакие методы ручные методы не смогут абсолютно достоверно определить, был ли этот объект инициализирован. И только конструкторы, которые вызываются автоматически, гарантируют, что объект был инициализирован. И именно поэтому конструкторы никогда не имеют права не выполнить свою задачу. Единстенный способ сообщить о неуспехе - исключение, в результате которого несконструированным объектом невозможно будет воспользоваться. Возлагать бОльшие задачи на конструктор, как и позволить конструктору недоконструировать объект, будет серьёзной ошибкой проектирования.
Экономить на количестве действий можно, но это часто чревато. Один из главных принципов "безопасного" пограммирования "каждый метод и каждая функция должны решать ровно одну задачу". Тогда при невозможности выполнить эту свою задачу можно будет без проблем откатить все изменения перед возвратом управления. В твоём случае объединить два действия в одно можно, если предположить, что создаваемый объект не живёт сам по себе, а находится под во владении у списка. Тогда имеет смысл просто предусмотреть метод у списка, который будет сам создавать объект и в случае успеха включать себе в коллекцию. К примеру:
Код:
class List;
class Node
{
 Node* next;
 Node* prev;
 
 Node(int, float, const char*);
 
 friend class List;
 /* ... */
 
public:
 /* ... */
};
 
class List
{
 Node* head;
 Node* tail;
 /* ... */
 
public:
 bool newItem(Node* here, int i, float f, const char* str)
 {
  Node* tmp(i, f, str);
 
  tmp->prev = here;
  tmp->next = here->next;
  here->next = tmp;
  tmp->next->prev = tmp;
 }
};
При неуспехе конструирования tmp исключение не даст выполнить связь несконструированного объекта с коллекцией. Если же он будет успешно создан, то манипуляции с указателями, которые точно не могут вызвать исключения, гарантируют, что объект не будет "потерян" без ссылок на него, а коллекция не окажется в неопределённом состоянии из-за не до конца выполненной связи с коллекцией. Т.е. наблюдаем "или всё, или ничего" - строгая гарантия безопасности.

----------
Одни с годами умнеют, другие становятся старше.

Всего записей: 613 | Зарегистр. 08-08-2006 | Отправлено: 14:30 11-09-2007 | Исправлено: Qraizer, 14:52 11-09-2007
cosmosliva



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день
Qraizer
Спасибо за советы
Твой код не совсем нагляден для меня тк занимаюсь С#
(да еще и с указателями (если правильно перевел знак *)- которые так настойчиво рекомендуют избегать в книгах по С#)  
 
но по сути предполагается идти последовательно  
создали объект поместили в список
соответственно:
1. создаем объект
2. создаем список
3. через ссылку на объект передаем в метод списка
 
но тогда возникают следующие вопросы
как правильно организовать:
1. если необходимо 2ая 3ая вложенность (повторять шаги 2-3)
2. при необходимости еще большей абстракции - создаем еще более верхний уровень, к примеру в следующей версии, и опять повторяем шаги 2-3
3. есть необходимость организовать проверку данных и в зависимости от этого помещать объект или в уже существующий список или в новый список
соответственно нужная некая единая цепочка действий (срабатываний) - один раз прописанная  
- я понимаю что это и называется алгоритм действия программы
 
наверное самым разумным будет
создать класс - Управленец - пусть занимается логикой
 
- просто первоначально хотел при описании классов зависти в них логику срабатываний и связи между собой
 
наконец-то у самого начало прояснять чего-же хочу:
создается объект
поля объекта имеет значения, описывающие  принадлежность его к определенной группе - иерархии
создаем цепочку потомко-зависимых объектов
 
и тогда вопрос  
есть ли разница (пока не видимая мною)
создавать иерархию снизу вверх или сверху вниз
разумеется с учетом выше сказанных замечаний Mickey_from_nsk и Qraizer

Всего записей: 46 | Зарегистр. 09-10-2003 | Отправлено: 16:16 13-09-2007
Mickey_from_nsk

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cosmosliva
Есть ощущение, что ты слегонца перемудрил.
Если надо занести объект в список, то разницы, когда создавать список, а когда объект нет никакой. Обычно в задачах к моменту создания объекта список уже существует.
 
Если пишешь на C#, у него есть уже списки, как в виде класса- System.Collections.List, так и в виде дженерика System.Collections.Generics.List<>.
 
Соответственно у них есть методы Add и Insert.
Таким образом - вставляй объект в список куда тебе угодно.
 
Если хочешь список списков - создай сначала его, потом поочереди вставь в него объект.
 
Сверху вниз или снизу вверх создавать иерархию - по барабану. Единственное но. Опять же в большинстве задач при вставке элемента (объекта или списка), список уже должен существовать. Поэтому, не парь голову. Если охота помучиться над этим вопросом - посмотри что эстетичнее выглядит . С точки зрения менеджера памяти - все равно.

Всего записей: 636 | Зарегистр. 21-10-2002 | Отправлено: 07:31 14-09-2007
cosmosliva



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mickey_from_nsk
Спасибо  
наверное точно перемудриваю
 
в голове просто не все устаканилось
 
а можно поподробнее про
дженерик System.Collections.Generics.List()
что за зверь
в чем +-  
 
С уважением!

Всего записей: 46 | Зарегистр. 09-10-2003 | Отправлено: 12:19 15-09-2007
Mickey_from_nsk

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cosmosliva
Вопросы у вас, батенька.
 
Во первых строках вот вам ссылка http://msdn2.microsoft.com/en-us/library/6sh2ey19.aspx
Читайте, доходчиво написано.
 
Если с английским туго, на пальцах попробую.
 
Дженерик (generic) List (я там немного в пространствах имен напутал - System.Collections.Generic.List) предназначен для реализации _типизированных_ динамических массивов, в отличие от ArrayList, в котором элементы массива - ссылки на Object. Соответственно, List дает все вкусности типизированных массивов. Если не ошибаюсь, это аналог std::vector<> для С++.  
 
А плюсы и минусы надо искать по сравнению с чем-нибудь. Напиши, что знаешь, сравню, если хочешь.

Всего записей: 636 | Зарегистр. 21-10-2002 | Отправлено: 07:56 17-09-2007
Nexandr



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Посоветйте актуальный учебник по С. Начал изучать С по Учебнику "Керниган, Ричи Язык C".  
Я люблю такие учебники там сразу разбирают готовые примеры а не маются с теорией. Но проблема заключается в том что что бы заработал 1ый пример нужно его дополнить void main(), а второй пример вообще не работает. Для компиляции использую MVS(хоть как то выполняется) и gcc. Или посоветутйе компилятор подходящий для этой книги. Спасибо

Всего записей: 9 | Зарегистр. 03-09-2007 | Отправлено: 10:41 29-09-2007
virpool

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Nexandr
Джесс Либерти "С++ за 21 день. 3 изд."
Хорошая книга, правда ее за 21 день не изучишь . Ее кстати у нас в универе советуют. Довольно понятно, доходчиво написано и с массой примеров.
Компилятор для этой книги любой.

Всего записей: 143 | Зарегистр. 01-02-2007 | Отправлено: 10:48 29-09-2007
Mr Nobody



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Nexandr
Для книги Керниган, Ритчи, "Язык C" подходит любой компилятор языка Си.

Цитата:
Но проблема заключается в том что что бы заработал 1ый пример нужно его дополнить void main(), а второй пример вообще не работает.

Я посмотрел первый пример в своей книге. Запишите его так

Цитата:
 
#include <stdio.h>
 
int main()
{
     printf("Hello, World!\n");
 
     return 0;
}
 

Все будет работать!
 
Минимальная программа на Си  

Цитата:
 
#include <stdio.h>
 
int main()
{
     ......
 
     return 0;
}
 

Добаляйте вместо многоточия и до оператора return 0 свои операторы и все будет в порядке.
 
 
 
   

Всего записей: 350 | Зарегистр. 19-09-2007 | Отправлено: 13:59 29-09-2007 | Исправлено: Mr Nobody, 14:02 29-09-2007
topotuno



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Книгу лучше в бумажном виде под рукой иметь.
+ http://community.i-rs.ru/index.php/topic,5853.0.html
Кто знает как  MS VC 6.0 SE запускать от  ограниченного пользователя. (а то не компилирует error swaping cl.exe )
 

Всего записей: 315 | Зарегистр. 28-10-2006 | Отправлено: 14:11 29-09-2007 | Исправлено: topotuno, 07:38 30-09-2007
The82dDisciple

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужно научиться программированию если возможно то на примере создания словарей (Лингво).
Хочу спрограмировать свой словарь!
Какую литературу актуально сейчас читать?
На каком языке большинство словарей создаються?
И с каким языком надо и лучше?  
Кокой язык: С, С++, С# или Java???
Как осуществить поддержку нескольких операционных систем?
 
 

Всего записей: 57 | Зарегистр. 24-09-2007 | Отправлено: 18:39 14-10-2007 | Исправлено: The82dDisciple, 12:39 15-10-2007
Mr Nobody



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
The82dDisciple. парень, ты силен. Ну а теперь, если можно, все по простому. Я ничего не понял, что ты хотел сказать.

Всего записей: 350 | Зарегистр. 19-09-2007 | Отправлено: 09:42 15-10-2007
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
The82dDisciple
Отредактируй свой пост пожалуйста. Ты один занял всю страницу своими повторениями. И столько пустых строк тоже как то не помогают понять тебя.

Всего записей: 3923 | Зарегистр. 31-03-2002 | Отправлено: 09:51 15-10-2007
Dem_anywhere



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
The82dDisciple
Если на данный момент нихрена не знаешь - то нужно начинать с чего-то простого.
Соответственно нужен нормальный простой IDE.
Ну а программить из перечисленного проще на С# или Java.  
 

Всего записей: 230 | Зарегистр. 28-02-2006 | Отправлено: 12:44 15-10-2007
The82dDisciple

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А нужно ли мне для моей цели начинать с С затем С++ для  и только потом С#?
Хотя бы для понимания процессов в С# ООП ?
Или для моих целей С и С++ уже никогда не понадобятся?  
Я правильно Вас понял - смело начинать с С#?

Всего записей: 57 | Зарегистр. 24-09-2007 | Отправлено: 16:16 15-10-2007 | Исправлено: The82dDisciple, 16:41 15-10-2007
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
The82dDisciple

Цитата:
Какую литературу актуально сейчас читать?
Самая актуальная - help. Научишься работать с хелпом, считай 90% литературы освоил.

Цитата:
На каком языке большинство словарей создаються?
Для тебя это не главное. Програму можно писать на любом языке.Для тебя сейчас легкость освоения на первом месте. Поэтому действительно С# или VB.Net, что на самом деле примерно одно и тоже по освоению.
Цитата:
Как осуществить поддержку нескольких операционных систем?  
Тоже пока не стоит зацикливаться на этом. Когда сделаешь програму для одного, тогда и будешь разбираться. Тебе надо основы получить.
Цитата:
Или для моих целей С и С++ уже никогда не понадобятся?  
Никогда слишком сильно сказано. В ближайшем и не столь отдаленном будущем точно не понадобятся.

Всего записей: 3923 | Зарегистр. 31-03-2002 | Отправлено: 20:45 15-10-2007 | Исправлено: dneprcomp, 09:12 16-10-2007
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Решил поучиться программированию. С чего начать?


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru