Классический форум-трекер
canvas not supported
Нас вместе: 4 232 314

Герберт Шилдт | C# 4.0. Полное руководство (2011) [PDF]


 
 
RSS
Начать новую тему   Ответить на тему    Торрент-трекер NNM-Club -> Компьютерная литература -> Программирование
Автор Сообщение
Pakot ®
Стаж: 14 лет 5 мес.
Сообщений: 231
Ratio: 26.759
Поблагодарили: 8557
100%
russia.gif
Герберт Шилдт | C# 4.0. Полное руководство (2011) [PDF]
Автор: Герберт Шилдт
Название: C# 4.0. Полное руководство
Издательство: "Вильямс"
ISBN: 978-5-8459-1684-6
Отрасль (жанр): Программирование
Формат: PDF
Качество: E-book
Иллюстрации: Цветные и черно-белые
Страниц: 1056

Описание:
В этом полном руководстве по C# 4.0 — языку программирования, разработанному специально для среды .NET, — детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки.
Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.
- Полное описание средств языка C#
- Подробное рассмотрение новых средств в версии C# 4.0, в том числе PLINQ, библиотеку TPL, именованные и необязательные аргументы, динамический тип данных и многое другое
- Сотни простых и понятных примеров программ с комментариями.
Самый полный источник информации по C#

Благодаря поддержке параллельного языка интегрированных запросов (PLINQ) и библиотеки распараллеливания задач (TPL) версия 4.0 стала новой вехой в программировании на C#, и поэтому Герберт Шилдт, автор лучших книг по программированию, обновил и расширил свое классическое руководство, чтобы охватить в нем эти и другие нововведения. В книге подробно описываются языковые средства C#, даются профессиональные рекомендации и приводятся сотни примеров программ, охватывающих все аспекты программирования на C#, включая синтаксис, ключевые слова и основные библиотеки, не говоря уже о таких новшествах, как PLINQ, TPL, динамический тип данных, а также именованные и необязательные аргументы.
Это необходимое каждому программирующему на C# справочное руководство написано простым и доступным языком, благодаря которому Герберт Шилдт стал таким популярным. В книге найдут ответы на насущные вопросы по C# как начинающие, так и опытные программисты.
Об авторе
О научном редакторе

Благодарности

Предисловие
Структура книги
Книга для всех программирующих
Необходимое программное обеспечение
Код, доступный в Интернете
Что еще почитать
От издательства

ЧАСТЬ I. ЯЗЫК C#

Глава 1. Создание C#
Генеалогическое дерево C#
Язык С — начало современной эпохи программирования
Появление ООП и C++
Появление Интернета и Java
Создание C#
Развитие C#
Связь С# со средой .NET Framework
О среде NET Framework 37
Принцип действия CLR
Управляемый и неуправляемый код
Общеязыковая спецификация

Глава 2. Краткий обзор элементов C#
Объектно-ориентированное программирование
Инкапсуляция
Полиморфизм
Наследование
Первая простая программа
Применение компилятора командной строки csc.exe
Применение интегрированной среды разработки Visual Studio
Построчный анализ первого примера программы
Обработка синтаксических ошибок
Незначительное изменение программы
Вторая простая программа
Другие типы данных
Два управляющих оператора
Условный оператор
Оператор цикла
Использование кодовых блоков
Точка с запятой и оформление исходного текста программы
Ключевые слова C#
Идентификаторы
Библиотека классов среды .NET Framework

Глава 3. Типы данных, литералы и переменные
О значении типов данных
Типы значений в C#
Целочисленные типы
Типы для представления чисел с плавающей точкой
Десятичный тип данных
Символы
Логический тип данных
Некоторые возможности вывода
Литералы
Шестнадцатеричные литералы
Управляющие последовательности символов
Строковые литералы
Более подробное рассмотрение переменных
Инициализация переменной
Динамическая инициализация
Неявно типизированные переменные
Область действия и время существования переменных
Преобразование и приведение типов
Автоматическое преобразование типов
Приведение несовместимых типов
Преобразование типов в выражениях
Приведение типов в выражениях

Глава 4. Операторы
Арифметические операторы
Операторы инкремента и декремента
Операторы отношения и логические операторы
Укороченные логические операторы
Оператор присваивания
Составные операторы присваивания
Поразрядные операторы
Поразрядные операторы И, ИЛИ, исключающее ИЛИ и НЕ
Операторы сдвига
Поразрядные составные операторы присваивания
Оператор ?
Использование пробелов и круглых скобок
Предшествование операторов

Глава 5. Управляющие операторы
Оператор if
Вложенные операторы if
Конструкция if-else-if -
Оператор switch
Вложенные операторы switch
Оператор цикла for
Некоторые разновидности оператора цикла for
Оператор цикла while
Оператор цикла do-while
Оператор цикла foreach
Применение оператора break для выхода из цикла
Применение оператора continue
Оператор return
Оператор goto

Глава 6. Введение в классы, объекты и методы
Основные положения о классах
Общая форма определения класса
Определение класса
Создание объектов
Переменные ссылочного типа и присваивание
Методы
Добавление метода в класс Building
Возврат из метода
Возврат значения
Использование параметров
Добавление параметризированного метода в класс Building
Исключение недоступного кода
Конструкторы
Параметризированные конструкторы
Добавление конструктора в класс Building
Еще раз об операторе new
Применение оператора new вместе с типами значений
"Сборка мусора" и применение деструкторов
Деструкторы
Ключевое слово this

Глава 7. Массивы и строки
Массивы
Одномерные массивы
Многомерные массивы
Двумерные массивы
Массивы трех и более измерений
Инициализация многомерных массивов
Ступенчатые массивы
Присваивание ссылок на массивы
Применение свойства Length
Применение свойства Length при обращении со ступенчатыми массивами
Неявно типизированные массивы
Оператор цикла foreach
Строки
Построение строк
Обращение со строками
Массивы строк
Постоянство строк
Применение строк в операторах switch

Глава 8. Подробнее о методах и классах
Управление доступом к членам класса
Модификаторы доступа
Организация закрытого и открытого доступа
Практический пример организации управления доступом
Передача объектов методам по ссылке
Способы передачи аргументов методу
Использование модификаторов параметров ref и out
Использование модификатора параметра ref
Использование модификатора параметра out
Использование модификаторов ref и out для ссылок на объекты
Использование переменного числа аргументов
Возврат объектов из методов
Возврат массива из метода
Перегрузка методов
Перегрузка конструкторов
Вызов перегружаемого конструктора с помощью ключевого слова this
Инициализаторы объектов
Необязательные аргументы
Необязательные аргументы и перегрузка методов
Необязательные аргументы и неоднозначность
Практический пример использования необязательных аргументов
Именованные аргументы
Метод Main()
Возврат значений из метода Main()
Передача аргументов методу Main()
Рекурсия
Применение ключевого слова static
Статические конструкторы
Статические классы

Глава 9. Перегрузка операторов
Основы перегрузки операторов
Перегрузка бинарных операторов
Перегрузка унарных операторов
Выполнение операций со встроенными в C# типами данных
Перегрузка операторов отношения
Перегрузка операторов true и false
Перегрузка логических операторов
Простой способ перегрузки логических операторов
Как сделать укороченные логические операторы доступными для применения
Операторы преобразования
Рекомендации и ограничения по перегрузке операторов
Еще один пример перегрузки операторов

Глава 10. Индексаторы и свойства
Индексаторы
Создание одномерных индексаторов
Перегрузка индексаторов
Индексаторы без базового массива
Многомерные индексаторы
Свойства
Автоматически реализуемые свойства
Применение инициализаторов объектов в свойствах
Ограничения, присущие свойствам
Применение модификаторов доступа в аксессорах
Применение индексаторов и свойств

Глава 11. Наследование
Основы наследования
Доступ к членам класса и наследование
Организация защищенного доступа
Конструкторы и наследование
Вызов конструкторов базового класса
Наследование и сокрытие имен
Применение ключевого слова base для доступа к скрытому имени
Создание многоуровневой иерархии классов
Порядок вызова конструкторов
Ссылки на базовый класс и объекты производных классов
Виртуальные методы и их переопределение
Что дает переопределение методов
Применение виртуальных методов
Применение абстрактных классов
Предотвращение наследования с помощью ключевого слова sealed
Класс object
Упаковка и распаковка
Класс object как универсальный тип данных

Глава 12. Интерфейсы, структуры и перечисления
Интерфейсы
Реализация интерфейсов
Применение интерфейсных ссылок
Интерфейсные свойства
Интерфейсные индексаторы
Наследование интерфейсов
Сокрытие имен при наследовании интерфейсов
Явные реализации
Выбор между интерфейсом и абстрактным классом
Стандартные интерфейсы для среды .NET Framework
Структуры
О назначении структур
Перечисления
Инициализация перечисления
Указание базового типа перечисления
Применение перечислений

Глава 13. Обработка исключительных ситуаций
Класс System.Exception
Основы обработки исключительных ситуаций
Применение пары ключевых слов try и catch
Простой пример обработки исключительной ситуации
Второй пример обработки исключительной ситуации
Последствия неперехвата исключений
Обработка исключительных ситуаций — "изящный" способ устранения программных ошибок
Применение нескольких операторов catch
Перехват всех исключений
Вложение блоков try
Генерирование исключений вручную
Повторное генерирование исключений
Использование блока finally
Подробное рассмотрение класса Exception
Наиболее часто используемые исключения
Получение производных классов исключений
Перехват исключений производных классов
Применение ключевых слов checked и unchecked

Глава 14. Применение средств ввода-вывода
Организация системы ввода-вывода в C# на потоках
Байтовые и символьные потоки
Встроенные потоки
Классы потоков
Класс Stream
Классы байтовых потоков
Классы-оболочки символьных потоков
Двоичные потоки
Консольный ввод-вывод
Чтение данных из потока ввода с консоли
Применение метода ReadKey()
Запись данных в поток вывода на консоль
Класс FileStream и байтовый ввод-вывод в файл
Открытие и закрытие файла
Чтение байтов из потока файлового ввода-вывода
Запись в файл
Использование класса FileStream для копирования файла
Символьный ввод-вывод в файл
Применение класса StreamWriter
Применение класса StreamReader
Переадресация стандартных потоков
Чтение и запись двоичных данных
Класс BinaryWriter
Класс BinaryReader
Демонстрирование двоичного ввода-вывода
Файлы с произвольным доступом
Применение класса MemoryStream
Применение классов StringReader и StringWriter
Класс File
Копирование файлов с помощью метода Сору()
Применение методов Exists() и GetLastAccessTime()
Преобразование числовых строк в их внутреннее представление

Глава 15. Делегаты, события и лямбда-выражения
Делегаты
Групповое преобразование делегируемых методов
Применение методов экземпляра в качестве делегатов
Групповая адресация
Ковариантность и контравариантность
Класс System.Delegate
Назначение делегатов
Анонимные функции
Анонимные методы
Передача аргументов анонимному методу
Возврат значения из анонимного метода
Применение внешних переменных в анонимных методах
Лямбда-выражения
Лямбда-оператор
Одиночные лямбда-выражения
Блочные лямбда-выражения
События
Пример групповой адресации события
Методы экземпляра в сравнении со статическими методами в качестве обработчиков событий
Применение аксессоров событий
Разнообразные возможности событий
Применение анонимных методов и лямбда-выражений вместе с событиями
Рекомендации по обработке событий в среде .NET Framework
Применение делегатов EventHandler<TEventArgs> и EventHandler
Практический пример обработки событий

Глава 16. Пространства имен, препроцессор и сборки
Пространства имен
Объявление пространства имен
Предотвращение конфликтов имен с помощью пространств имен
Директива using
Вторая форма директивы using
Аддитивный характер пространств имен
Вложенные пространства имен
Глобальное пространство имен
Применение описателя псевдонима пространства имен ::
Препроцессор
Директива #define
Директивы #if и #endif
Директивы #else и #elif
Директива #undef
Директива #error
Директива #warning
Директива #line
Директивы #region и #endregion
Директива #pragma
Сборки и модификатор доступа internal
Модификатор доступа internal

Глава 17. Динамическая идентификация типов, рефлексия и атрибуты
Динамическая идентификация типов
Проверка типа с помощью оператора is
Применение оператора as
Применение оператора typeof
Рефлексия
Класс System.Type — ядро подсистемы рефлексии
Применение рефлексии
Получение сведений о методах
Вызов методов с помощью рефлексии
Получение конструкторов конкретного типа
Получение типов данных из сборок
Полностью автоматизированное обнаружение типов
Атрибуты
Основы применения атрибутов
Сравнение позиционных и именованных параметров
Встроенные атрибуты
Атрибут AttributeUsage
Атрибут Conditional
Атрибут Obsolete

Глава 18. Обобщения
Что такое обобщения
Простой пример обобщений
Различение обобщенных типов по аргументам типа
Повышение типовой безопасности с помощью обобщений
Обобщенный класс с двумя параметрами типа
Общая форма обобщенного класса
Ограниченные типы
Применение ограничения на базовый класс
Применение ограничения на интерфейс
Применение ограничения new() на конструктор
Ограничения ссылочного типа и типа значения
Установление связи между двумя параметрами типа с помощью ограничения
Применение нескольких ограничений
Получение значения, присваиваемого параметру типа по умолчанию
Обобщенные структуры
Создание обобщенного метода
Вызов обобщенного метода с явно указанными аргументами типа
Применение ограничений в обобщенных методах
Обобщенные делегаты
Обобщенные интерфейсы
Сравнение экземпляров параметра типа
Иерархии обобщенных классов
Применение обобщенного базового класса
Обобщенный производный класс
Переопределение виртуальных методов в обобщенном классе
Перегрузка методов с несколькими параметрами типа
Ковариантность и контравариантность в параметрах обобщенного типа
Применение ковариантности в обобщенном интерфейсе
Применение контравариантности в обобщенном интерфейсе
Вариантные делегаты
Создание экземпляров объектов обобщенных типов
Некоторые ограничения, присущие обобщениям
Заключительные соображения относительно обобщений

Глава 19. LINQ
Основы LINQ
Простой запрос
Неоднократное выполнение запросов
Связь между типами данных в запросе
Общая форма запроса
Отбор запрашиваемых значений с помощью оператора where
Сортировка результатов запроса с помощью оператора orderby
Подробное рассмотрение оператора select
Применение вложенных операторов from
Группирование результатов с помощью оператора group
Продолжение запроса с помощью оператора into
Применение оператора let для создания временной переменной в запросе
Объединение двух последовательностей с помощью оператора join
Анонимные типы
Создание группового объединения
Методы запроса
Основные методы запроса
Формирование запросов с помощью методов запроса
Синтаксис запросов и методы запроса
Дополнительные методы расширения, связанные с запросами
Режимы выполнения запросов: отложенный и немедленный
Деревья выражений
Методы расширения
PLINQ

Глава 20. Небезопасный код, указатели, обнуляемые типы и разные ключевые слова
Небезопасный код
Основы применения указателей
Применение ключевого слова unsafe
Применение модификатора fixed
Доступ к членам структуры с помощью указателя
Арифметические операции над указателями
Сравнение указателей
Указатели и массивы
Указатели и строки
Многоуровневая непрямая адресация
Массивы указателей
Создание буферов фиксированного размера
Обнуляемые типы
Основы применения обнуляемых типов
Применение обнуляемых объектов в выражениях
Оператор ??
Обнуляемые объекты, операторы отношения и логические операторы
Частичные типы
Частичные методы
Создание объектов динамического типа
Возможность взаимодействия с моделью СОМ
Дружественные сборки
Разные ключевые слова
Ключевое слов lock
Ключевое слово readonly
Ключевые слова const и volatile
Оператор using
Ключевое слово extern

ЧАСТЬ II. БИБЛИОТЕКА C#

Глава 21. Пространство имен System
Члены пространства имен System
Класс Math
Структуры .NET, соответствующие встроенным типам значений
Структуры целочисленных типов данных
Структуры типов данных с плавающей точкой
Структура Decimal
Структура Char
Структура Boolean
Класс Array
Сортировка и поиск в массивах
Обращение содержимого массива
Копирование массива
Применение предиката
Применение делегата Action
Класс BitConverter
Генерирование случайных чисел средствами класса Random
Управление памятью и класс GC
Класс object
Класс Tuple
Интерфейсы IComparable и IComparable<T>
Интерфейс IEquatable<T>
Интерфейс IConvertible
Интерфейс ICloneable
Интерфейсы IFormatProvider и IFormattable
Интерфейсы IObservable<T> и IObserver<T>

Глава 22. Строки и форматирование
Строки в C#
Класс String
Конструкторы класса String
Поле, индексатор и свойство класса String
Операторы класса String
Заполнение и обрезка строк
Вставка, удаление и замена строк
Смена регистра
Применение метода Substring()
Методы расширения класса String
Форматирование
Общее представление о форматировании
Спецификаторы формата числовых данных
Представление о номерах аргументов
Применение методов String.Format() и ToString() для форматирования данных
Применение метода String.Format() для форматирования значений
Применение метода ToString() для форматирования данных
Определение пользовательского формата числовых данных
Символы-заполнители специального формата числовых данных
Форматирование даты и времени
Определение пользовательского формата даты и времени
Форматирование промежутков времени
Форматирование перечислений

Глава 23. Многопоточное программирование. Часть первая: основы
Основы многопоточной обработки
Класс Thread
Создание и запуск потока
Простые способы усовершенствования многопоточной программы
Создание нескольких потоков
Определение момента окончания потока
Передача аргумента потоку
Свойство IsBackground
Приоритеты потоков
Синхронизация
Другой подход к синхронизации потоков
Класс Monitor и блокировка
Сообщение между потоками с помощью методов Wait(), Pulse() и PulseAll()
Пример использования методов Wait() и Pulse()
Взаимоблокировка и состояние гонки
Применение атрибута MethodImplAttribute
Применение мьютекса и семафора
Мьютекс
Семафор
Применение событий
Класс Interlocked
Классы синхронизации, внедренные в версии .NET Framework 4.0
Прерывание потока
Другая форма метода Abort()
Отмена действия метода Abort()
Приостановка и возобновление потока
Определение состояния потока
Применение основного потока
Дополнительные средства многопоточной обработки,
внедренные в версии .NET Framework 4.0
Рекомендации по многопоточному программированию
Запуск отдельной задачи

Глава 24. Многопоточное программирование. Часть вторая: библиотека TPL
Два подхода к параллельному программированию
Класс Task
Создание задачи
Применение идентификатора задачи
Применение методов ожидания
Вызов метода Dispose()
Применение класса TaskFactory для запуска задачи
Применение лямбда-выражения в качестве задачи
Создание продолжения задачи
Возврат значения из задачи
Отмена задачи и обработка исключения AggregateException
Другие средства организации задач
Класс Parallel
Распараллеливание задач методом Invoke()
Применение метода For()
Применение метода ForEach()
Исследование возможностей PLINQ
Класс ParallelEnumerable
Распараллеливание запроса методом AsParallel()
Применение метода AsOrdered()
Отмена параллельного запроса
Другие средства PLINQ
Вопросы эффективности PLINQ

Глава 25. Коллекции, перечислители и итераторы
Краткий обзор коллекций
Необобщенные коллекции
Интерфейсы необобщенных коллекций
Структура DictionaryEntry
Классы необобщенных коллекций
Хранение отдельных битов в классе коллекции BitArray
Специальные коллекции
Обобщенные коллекции
Интерфейсы обобщенных коллекций
Структура KeyValuePair<TKey, TValue>
Классы обобщенных коллекций
Параллельные коллекции
Сохранение объектов, определяемых пользователем классов, в коллекции
Реализация интерфейса IComparable
Реализация интерфейса IComparable для необобщенных коллекций
Реализация интерфейса IComparable для обобщенных коллекций
Применение интерфейса IComparer
Применение необобщенного интерфейса IComparer
Применение обобщенного интерфейса IComparer<T>
Применение класса StringComparer
Доступ к коллекции с помощью перечислителя
Применение обычного перечислителя
Применение перечислителя типа IDictionaryEnumerator
Реализация интерфейсов IEnumerable и IEnumerator
Применение итераторов
Прерывание итератора
Применение нескольких операторов yield
Создание именованного итератора
Создание обобщенного итератора
Инициализаторы коллекций

Глава 26. Сетевые средства подключения к Интернету
Члены пространства имен System.Net
Универсальные идентификаторы ресурсов
Основы организации доступа к Интернету
Класс WebRequest
Класс WebResponse
Классы HttpWebRequest и HttpWebResponse
Первый простой пример
Обработка сетевых ошибок
Исключения, генерируемые методом Create()
Исключения, генерируемые методом GetResponse()
Исключения, генерируемые методом GetResponseStream()
Обработка исключений
Класс Uri
Доступ к дополнительной информации, получаемой в ответ по протоколу HTTP
Доступ к заголовку
Доступ к cookie-наборам
Применение свойства LastModified
Практический пример создания программы MiniCrawler
Применение класса WebClient

Приложение. Краткий справочник по составлению документирующих комментариев
Дескрипторы XML-комментариев
Компилирование документирующих комментариев
Пример составления документации в формате XML

Предметный указатель
1. Хорошее издание, с закладочной навигацией в боковой панели;
2. Книга переработана в электронную, исходный размер DjVu - 7,66 МБ, реставрация обложек, выравнивание размеров страниц;
3. Текст хорошо распознан, возможно копирование в буфер (см.скрин2) и поиск по всему тексту (скрин3);
4. Максимальное увеличение страницы, сохраняет чистоту текста, ровность букв.
* возврат через закладку - Содержание;
* Скриншоты сняты с разрешением - 94,9%;
Скриншоты:


Время раздачи: по возможности
[NNM-Club.me]_Gerbert SHildt - C# 4.0. Polnoe rukovodstvo - 2011.pdf.torrent
 Торрент: Платиновая раздача  Зарегистрирован
 
Скачать


Примагнититься
 Зарегистрирован:   09 Фев 2014 22:58:36
 Размер:   9.91 MB  (
 Рейтинг:   4.9 (Голосов: 236)
 Поблагодарили:   784
 Проверка:   Оформление проверено модератором 10 Фев 2014 00:09:22
Как cкачать  ·  Как раздать  ·  Правильно оформить  ·  Поднять ратио!  
Alekster13
Стаж: 10 лет 11 мес.
Сообщений: 4
Ratio: 4.11
0.54%
ребят, не могу найти исходный текст к этой книге, мб есть у кого то или киньте ссылку на скачку, зарание благодарю.
Pakot ®
Стаж: 14 лет 5 мес.
Сообщений: 231
Ratio: 26.759
Поблагодарили: 8557
100%
russia.gif
Alekster13
исходный текст?
Alekster13
Стаж: 10 лет 11 мес.
Сообщений: 4
Ratio: 4.11
0.54%
Pakot ®
именно... там где написан код примеров задач.
silent_elusive
Стаж: 10 лет 8 мес.
Сообщений: 70
Ratio: 156.8
83.05%
Листинги полезнее перенабирать ,чем копировать. =)
tttuzikkk
Стаж: 11 лет 10 мес.
Сообщений: 6
Ratio: 2.119
Поблагодарили: 1
100%
Alekster13 писал(а): Перейти к сообщению
ребят, не могу найти исходный текст к этой книге, мб есть у кого то или киньте ссылку на скачку, зарание благодарю.

http://www.mhprofessional.com/downloads/products/007174116X/007174116x_code.zip
ziber602
Стаж: 12 лет 11 мес.
Сообщений: 56
Ratio: 11.964
Поблагодарили: 26
100%
Откуда: MINSK
belarus.gif
Спасибо тебе, добрый человек!))
oreh-jenn
Стаж: 11 лет 3 мес.
Сообщений: 10
Ratio: 2.172
Поблагодарили: 672
5.03%
Когда Шилдт выпустит по С# книгу обновленную до 4.5
basvas
Стаж: 14 лет 1 мес.
Сообщений: 1
Ratio: 1.27
25%
ukraine.gif
silent_elusive писал(а): Перейти к сообщению
Листинги полезнее перенабирать ,чем копировать. =)

Чем это, блин, полезнее? Синтаксис выучить? Ага, 4 языка выучил, а по клаве стучать так и не научился.
biophor
Стаж: 16 лет 3 мес.
Сообщений: 24
Ratio: 2.959
100%
russia.gif
лучшая книга для новичков
Показать сообщения:   
Начать новую тему   Ответить на тему    Торрент-трекер NNM-Club -> Компьютерная литература -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1