среда, 2 декабря 2015 г.

Rational Rose Enterprise 7.0.0.4

Год выпуска: 2008
Жанр: CASE-средство моделирования
Разработчик: IBM
Язык интерфейса: Английский
Тип сборки: Standard
Разрядность: 32-bit
Таблетка: присутствует (файл лицензии)
Операционная система: Windows XP, Vista, 7
Описание: Популярное средство визуального моделирования объектно-ориентированных информационных систем компании Rational Software Corp. Работа продукта основана на универсальном языке моделирования UML (Universal Modeling Language). Благодаря уникальному языку моделирования Rational Rose способен решать практически любые задачи в проектировании информационных систем: от анализа бизнес процессов до кодогенерации на определенном языке программирования. Только Rose позволяет разрабатывать как высокоуровневые, так и низкоуровневые модели, осуществляя тем самым либо абстрактное проектирование, либо логическое.
Только Rational Rose имеет весь необходимый набор визуальных средств проектирования. Только Rose поможет решить проблемы с кодогенерацией на определенном языке программирования. Только Rational Rose осуществляет такие подходы, как прямое и обратное проектирование, а так же Round Trip Engineering. Такой арсенал позволит не только проектировать новую систему, но и доработать старую, произведя процесс обратного проектирования.
На windows >= 8 запускать в режиме совместимости с windows xp sp3

СКАЧАТЬ

Rational Rose Enterprise Через браузер Торрентом 540,768,256
Патч                                 Через браузер Торрентом 65,597,440
Файл лицензии               Через браузер 9,810

Основы программирования. Видеокурс (2015) PCRec

Название: Основы программирования
Год выпуска: 2015
Жанр: Обучающее видео
Автор: Учебный проект GeekBrains
Информация о курсе:
Курс «Основы программирования» создан специально для тех, кто решил стать программистом, но не знает с чего начать. На данном курсе вы изучите фундаментальные основы программирования и информационных технологий, которые просто необходимы любому разработчику вне зависимости от того, какой язык программирования Вы выберете в дальнейшем.
Начальных знаний не требуется.По окончании курса Вы будете понимать фундаментальные основы программирования, которые очень пригодятся в дальнейшем обучении. Вы научитесь создавать простые алгоритмы и программы для решения конкретных задач. Понимание базовых концепций программирования позволит многократно увеличить эффективность дальнейшего обучения.Так же мы поможем понять, какое именно направление в программировании Вам наиболее интересно, будь то создание настольных приложений, программ под мобильные устройства, или же веб-сайтов. В курсе мы посоветуем материалы для дальнейшего изучения интересного Вам направления.
Выпущено: Россия
Продолжительность: 15:53:22
Файл
Формат: MP4
Качество: PCRec
Видео: AVC/H.264, 1280x720, ~38.0 Kbps
Аудио: AAC, 2 ch, 64.0 Kbps
Чему вы научитесь:
· Освоите фундаментальные основы программирования;
· Познакомитесь с основными терминами и понятиями;
· Научитесь разрабатывать алгоритмы;
· Получите реальный опыт разработки;
· Сможете писать простые программы;
· Познакомитесь с языками и направлениями программирования;
· Сможете четко определиться с направлением ваших интересов;
· Получите материалы и инструкции для дальнейшего развития
Программа курса:
Урок 1. Что такое программа и где она выполняется:
Где выполняются программы; устройство компьютера, и что нас в нём интересует; представление данных в памяти компьютера; низкоуровневые языки программирования; высокоуровневые языки программирования
Урок 2. Постановка задачи и алгоритмы:
Что должна сделать программа; алгоритмы; переменные; ветвления (в алгоритмах); примеры задач и алгоритмов их решения
Урок 3. Основы программирования:
Компилируемые и интерпретируемые языки программирования; практика – пишем Hello World; переменные; типы данных; ветвления (в коде); функции
Урок 4. Языки программирования:
Циклы; массивы; обзор современных языков программирования и их назначения
Бонусы от преподавателя:
— SEO продвижение
— Юзабилити сайтов
— Мобильные приложения
— Собеседование на 70+ тысяч
— Тренды веб разработки
— node.js — java на сервере
— Технологии веб разработки

СКАЧАТЬ

Через браузер 
Торрентом

ОСНОВЫ ПРОГРАММИРОВАНИЯ


Программирование все в большей степени становится занятием лишь для профессионалов. Объявленный в середине 1980-х гг. лозунг «Программирование — вторая грамотность» остался в прошлом. В понятие «компьютерная грамотность» сегодня входит прежде всего навык использования многообразных средств информационных технологий. Решая ту или иную информационную задачу, необходимо выбрать адекватное программное средство. Это могут быть электронные таблицы, системы управления базами данных, математические пакеты и т.п. И только в том случае, когда подобные средства не дают возможности решить задачу, следует прибегать к универсальным языкам программирования.
Принято различать программистов двух категорий: прикладных и системных. Системные программисты — это разработчики базовых программных средств ЭВМ (операционных систем, трансляторов, сервисных средств и т.п.). Они являются профессионалами высочайшего уровня в программировании. Прикладные программисты разрабатывают средства прикладного программного обеспечения ЭВМ, предназначенные для решения задач из различных областей (наука, техника, производство, сфера обслуживания, обучение и т.п.). Требования к качеству как прикладных программ, так и системных сегодня очень высоки. Программа должна не только правильно решать задачу, но и иметь современный интерфейс, быть высоконадежной, дружественной по отношению к пользователю и т.д. Только такие программы могут выдерживать конкуренцию на мировом рынке программных продуктов. Программирование на любительском уровне сегодня никому не нужно.
По мере развития компьютерной техники развивались также и методика, и технология программирования. Сначала возникает командное и операторное программирование, в 1960-х гг. бурно развивается структурное программирование, появляются линии логического и функционального программирования, а в последнее время — объектно-ориентированное и визуальное программирование.
Задача, которую следует ставить при первоначальном изучении программирования, — освоение основ структурной методики программирования. Для указанной цели наиболее подходящим средством является язык программирования Паскаль. Автор языка Паскаль — швейцарский профессор Никлаус Вирт — создавал его именно для этого. Структурная методика остается основой программистской культуры. Не освоив ее, человек, взявшийся изучать программирование, не имеет никаких шансов стать профессионалом.
Реализации Паскаля в версиях фирмы Borland для IBM, известных под названием Турбо Паскаль, значительно расширили язык по сравнению с вариантом Вирта. Начиная с версии 5.5 Турбо Паскаль становится также и языком объектного программирования.
Содержание третьей главы настоящего учебника ориентировано на глубокое освоение студентами базовых понятий языков программирования высокого уровня в их реализации на Паскале. Такая подготовка облегчает изучение других языков программирования. Изложение основ языков Си/Си++ в четвертой главе опирается на знания и навыки, полученные учащимися при изучении Паскаля.
При изучении данного курса студентам понадобятся знания основ алгоритмизации в рамках школьного базового курса информатики. Обычно в школе алгоритмизация изучается с использованием учебных исполнителей, с помощью которых можно успешно освоить основы структурной методики, а именно:
-  построение алгоритмов из базовых структур;
-  применение метода последовательной детализации.
Желательным является знакомство с архитектурой ЭВМ на уровне машинных команд (достаточно на модельных примерах учебных компьютеров, изучаемых в школьной информатике; совсем' не обязательно изучение реальных языков команд или ассемблера). Эти знания позволяют освоить основные понятия программирования, такие как переменная, присваивание; «входить в положение транслятора» и благодаря этому не делать ошибок, даже не помня каких-то деталей синтаксиса языка; предвидеть те «подводные камни», на которые может «напороться» ваша программа в процессе выполнения. По существу, все эти качества и отличают профессионального программиста от дилетанта.
Еще одно качество профессионала — способность воспринимать красоту программы, получать эстетическое удовольствие оттого, что она хорошо написана. Нередко это чувство помогает интуитивно отличить неправильную программу от правильной. Однако основным критерием правильности является, безусловно, не интуиция, а грамотно организованное тестирование.
Процесс изучения и практического освоения программирования делится на три части:
-  изучение методов построения алгоритмов;
-  изучение языка программирования;
-  изучение и практическое освоение определенной системы программирования .
Решению первой задачи посвящены вторая и пятая главы учебника. Во второй главе даются основные, базовые понятия и принципы построения алгоритмов работы с величинами. В пятой главе излагаются некоторые известные методики полного построения алгоритмов, обсуждаются проблемы тестирования программ, оценки сложности алгоритмов.
Языки программирования Турбо Паскаль и Си/Си++ излагаются в третьей и четвертой главах учебника соответственно. Подчеркнем, что данная книга — это прежде всего учебник по программированию, а не по языкам Паскаль и Си. Поэтому исчерпывающего описания данных языков вы здесь не найдете. Языки излагаются в том объеме, который необходим для начального курса программирования. Более подробное описание языков можно найти в книгах, приведенных в списке литературы.
В учебнике нет инструкций по работе с конкретными системами программирования для изучаемых языков. С ними студенты должны познакомиться в процессе практики на ЭВМ, используя другие источники.
Шестая глава представляет собой достаточно большой задачник по программированию. Этот задачник можно использовать для организации практических и лабораторных занятий по любому из изучаемых языков.

Навигация :

ГЛАВА 1. ОСНОВЫ АЛГОРИТМИЗАЦИИ

1.1. Алгоритмы и величины

Этапы решения задачи на ЭВМ. Работа по решению любой задачи с использованием компьютера делится на следующие этапы: 1. Постановка задачи. 2. Формализация задачи. 3. Построение алгоритма. (читать далее...)

стр. 0 1 2

1.2. Линейные вычислительные алгоритмы

Основным элементарным действием в вычислительных алгоритмах является присваивание значения переменной величине. Если значение константы определено видом ее записи, то переменная величина получает конкретное значение только в результате присваивания. (читать далее...)

стр. 3 4

1.3. Ветвления и циклы в вычислительных алгоритмах

Составим алгоритм решения квадратного уравнения Задача хорошо знакома из математики. Исходными данными здесь являются коэффициенты а, b, с. Решением в общем случае будут два корня x1 и х2, которые вычисляются по формуле: Все используемые в этой программе величины вещественного типа. (читать далее...)

стр. 5 6 7

1.4. Вспомогательные алгоритмы и процедуры

В теории алгоритмов известно понятие вспомогательного алгоритма. Вспомогательным называется алгоритм решения некоторой подзадачи из основной решаемой задачи. В таком случае алгоритм решения исходной задачи называется основным алгоритмом. (читать далее...)

стр. 8 9

ГЛАВА 2. ВВЕДЕНИЕ В ЯЗЫКИ ПРОГРАММИРОВАНИЯ

2.1. История и классификация языков программирования

Язык программирования — это способ записи программ решения различных задач на ЭВМ в понятной для компьютера форме. Процессор компьютера непосредственно понимает язык машинных команд (ЯМК). Программы на ЯМК программисты писали лишь для самых первых ламповых машин — ЭВМ первого поколения. (читать далее...)

стр. 10 11 12 13

2.2. Структура и способы описания языков программирования высокого уровня

Во всяком языке программирования определены способы организации данных и способы организации действий над данными. Кроме того, существует понятие «элементы языка», включающее в себя множество символов (алфавит), лексемы и другие изобразительные средства языка программирования. (читать далее...)

стр. 14 15

ГЛАВА 3. ПРОГРАММИРОВАНИЕ НА ПАСКАЛЕ

3.1. Первое знакомство с Паскалем

Структура программы на Паскале. По определению стандартного Паскаля программа состоит из заголовка программы и тела программы (блока), за которым следует точка — признак конца программы. В свою очередь, блок содержит разделы описаний и раздел операторов. (читать далее...)

стр. 16 17 18 19

3.2. Некоторые сведения о системе Турбо Паскаль

Название Турбо Паскаль обычно воспринимается в двух смыслах: • как диалект языка Паскаль, представляющий собой расширение стандартного Паскаля; • как система программирования Турбо Паскаль, являющаяся совокупностью системных программ, предназначенных для создания, отладки и выполнения Паскаль-программ. (читать далее...)

стр. 20 21 22

3.3. Элементы языка Турбо Паскаль

Алфавит. Алфавит языка состоит из множества символов, включающих в себя буквы, цифры и специальные символы. Латинские буквы: от A до Z (прописные) и от а до z. (строчные). Цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. (читать далее...)

стр. 23

3.4. Типы данных

Концепция типов данных является одной из центральных в любом языке программирования. С типом величины связаны три ее свойства: форма внутреннего представления, множество принимаемых значений и множество допустимых операций. (читать далее...)

стр. 24 25

3.5. Арифметические операции, функции, выражения. Арифметический оператор присваивания

К арифметическим типам данных относятся группы вещественных и целых типов. К ним применимы арифметические операции и операции отношений. Операции над данными бывают унарными (применимые к одному операнду) и бинарными (применимые к двум операндам). (читать далее...)

стр. 26 27

3.6. Ввод с клавиатуры и вывод на экран

Ввод данных — это передача информации от внешних устройств в оперативную память. Вводятся, как правило, исходные данные решаемой задачи. Вывод — обратный процесс, когда данные передаются из оперативной памяти на внешние носители (принтер, дисплей, магнитные устройства и т.д (читать далее...)

стр. 28 29

3.7. Управление символьным выводом на экран

Использование для вывода на экран только процедур Write и WriteLn дает программисту очень слабые возможности для управления расположением на экране выводимого текста. Печать текста может производиться только сверху вниз, слева направо. (читать далее...)

стр. 30 31 32

3.8. Логические величины, операции, выражения. Логический оператор присваивания

Прямое отношение к программированию имеет дисциплина, которая называется математической логикой. Основу математической логики составляет алгебра логики, или исчисление высказываний. Под высказыванием понимается любое утверждение, в отношении которого можно однозначно сказать, истинно оно или ложно. (читать далее...)

стр. 33 34

3.9. Функции, связывающие различные типы данных

В табл. 3.6 приводится список стандартных функций, обеспечивающих связь между различными типами данных. Таблица 3.6 Функции ord, pred и succ применимы только к порядковым типам. (читать далее...)

стр. 35 36

3.10. Логические выражения в управляющих операторах

Алгоритмическая структура ветвления программируется в Паскале с помощью условного оператора. Раньше мы его описывали в таком виде: If <условие> Then <оператор 1> Else <о (читать далее...)

стр. 37 38

3.11. Цикл по параметру

Рассмотрим следующую простую задачу: требуется вычислить сумму целых чисел от M до N путем прямого суммирования. Здесь М и N — целые числа. Задачу можно сформулировать так: Алгоритм и программа решения этой задачи с использованием структуры цикл-пока представлены на рис. (читать далее...)

стр. 39 40

3.12. Особенности целочисленной и вещественной арифметики

Числовые расчеты могут производиться на множестве целых чисел или на множестве вещественных чисел. С математической точки зрения целые числа являются подмножеством множества вещественных чисел. (читать далее...)

стр. 41 42 43

3.13. Подпрограммы

С понятием вспомогательного алгоритма вы уже знакомы (см. разд. 1.4). В языках программирования вспомогательные алгоритмы называются подпрограммами. В Паскале различаются две разновидности подпрограмм: процедуры и функции. (читать далее...)

стр. 44 45 46 47 48 49

3.14. Вычисление рекуррентных последовательностей

Рекуррентная последовательность. Из курса математики известно понятие рекуррентной последовательности. Это понятие вводится так: пусть известно k чисел a1, ..., аk. Эти числа являются первыми числами числовой последовательности. (читать далее...)

стр. 50 51 52 53

3.15. Основные понятия и средства компьютерной графики в Турбо Паскале

До сих пор мы использовали экран компьютера только для вывода символьной информации — чисел, текстов. Однако Турбо Паскаль позволяет выводить на экран рисунки, чертежи, графики функций, диаграммы и т.п (читать далее...)

стр. 54 55 56 57 58 59 60

3.16. Строковый тип данных

Теперь мы познакомимся с типом данных, который относится к числу структурированных. Это строковый тип данных (строка). Следует заметить, что строковый тип данных есть в Турбо Паскале и отсутствует в стандартном Паскале. (читать далее...)

стр. 61 62 63 64

3.17. Табличные данные и массивы

В повседневной и научной практике часто приходится встречаться с информацией, представленной в табличной форме. Вот, например, таблица, содержащая среднемесячные значения температуры, °С, за определенный год: Такую таблицу называют линейной. (читать далее...)

стр. 65 66 67 68 69

3.18. Понятие множества. Множественный тип данных

Одним из фундаментальных разделов математики является теория множеств. Некоторые моменты математического аппарата этой теории реализованы в Паскале через множественный тип данных (множества). (читать далее...)

стр. 70 71 72 73

3.19. Файлы. Файловые переменные

С термином «файл» вам уже приходилось встречаться. Прежде всего это понятие обычно связывают с информацией на устройствах внешней памяти. В Паскале понятие файла употребляется в двух смыслах: • как поименованная информация на внешнем устройстве (внешний файл); (читать далее...)

стр. 74 75 76 77 78 79

3.20. Комбинированный тип данных

Все структурированные типы данных, с которыми мы уже познакомились, представляют собой совокупности однотипных величин. Комбинированный тип данных — это структурированный тип, состоящий из фиксированного числа компонент (полей) разного типа. (читать далее...)

стр. 80 81 82

3.21. Указатели и динамические структуры

До сих пор мы рассматривали программирование, связанное с обработкой только статических данных. Статическими называются такие величины, память под которые выделяется во время компиляции и сохраняется в течение всей работы программы. (читать далее...)

стр. 83 84 85 86 87 88 89

3.22. Внешние подпрограммы и модули

Стандартный Паскаль не располагает средствами разработки и поддержки библиотек программиста (в отличие, скажем, от Фортрана и других языков программирования высокого уровня), которые компилируются отдельно и в дальнейшем могут быть использованы не только самим разработчиком. (читать далее...)

стр. 90 91 92 93

3.23. Объектно-ориентированное программирование

Основные понятия объектно-ориентированного программирования (ООП). Основополагающей идеей одного из современных подходов к программированию — объектно-ориентированному — является объединение данных и обрабатывающих их процедур в единое целое — объекты. (читать далее...)

стр. 94 95 96 97 98 99 100

3.24. Виртуальные методы. Конструкторы и деструкторы

Объекты в динамической памяти. При работе с объектами довольно типичной является ситуация, когда сложный метод приходится создавать заново для каждого типа объекта, хотя различия в поведении объектов могут быть небольшими. (читать далее...)

стр. 101 102 103

ГЛАВА 4. ЯЗЫК ПРОГРАММИРОВАНИЯ СИ++

4.1. Введение в Си и Си++

История языка программирования C++. Вторым языком программирования, который предлагается для изучения в данном пособии, является язык Си (в английском варианте его название обозначается одной заглавной буквой латинского алфавита — С). (читать далее...)

стр. 104 105 106

4.2. Элементы языка Си++

Алфавит. В алфавит языка Си++ входят: • латинские буквы: от а до z (строчные) и от A до Z (прописные); • десятичные цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9; • специальные символы: " (читать далее...)

стр. 107

4.3. Типы данных

Концепция типов данных является важнейшей стороной любого языка программирования. Особенность Паскаля состоит в большом разнообразии типов, схематически представленном в разд. 3.4 на рис. 9. (читать далее...)

стр. 108 109 110 111

4.4. Операции и выражения

Во всех языках программирования под выражением подразумевается конструкция, составленная из констант, переменных, знаков операций, функций, скобок. Выражение определяет порядок вычисления некоторого значения. (читать далее...)

стр. 112 113 114 115 116 117

4.5. Линейные программы на Си/Си++

Структура программы. Общая структура программы на Си/Си++ следующая: директивы_препроцессора определение_функции_1 определение_функции_2 определение_функции_N Среди функций обязательно присутствует главная функция с именем main. (читать далее...)

стр. 118 119 120 121 122

4.6. Программирование ветвлений

Для программирования ветвящихся алгоритмов в языке Си имеется несколько различных средств. К ним относятся рассмотренная выше операция условия ?:, условный оператор if и оператор выбора switch. (читать далее...)

стр. 123 124

4.7. Программирование циклов

В Си, как и в Паскале, существуют все три типа операторов цикла: цикл с предусловием, цикл с постусловием и цикл с параметром. Цикл с предусловием. Формат оператора цикла с предусловием: while (выражение) оператор; (читать далее...)

стр. 125 126 127

4.8. Функции

А теперь нам предстоит разобраться с вопросом о том, как в Си/Си++ реализуется механизм подпрограмм. Вспомним о том, что в Паскале существуют две разновидности подпрограмм: подпрограммы-процедуры и подпрограммы-функции. (читать далее...)

стр. 128 129 130 131 132 133

4.9. Массивы

Понятие массива знакомо из Паскаля. Массив — это структура однотипных элементов, занимающих непрерывную область памяти. С массивом связаны следующие его свойства: имя, тип, размерность, размер. (читать далее...)

стр. 134 135 136

4.10. Указатели

Понятие указателя знакомо читателю из разд. 3.21, в котором описывается ссылочный тип данных в Паскале. Смысл этого понятия в Си/Си++ остается тем же: указатель — это адрес поля памяти, занимаемого программным объектом. (читать далее...)

стр. 137 138 139 140

4.11. Обработка символьных строк

В языках Си/Си++ нет специально определенного строкового типа данных, как в Турбо Паскале. Символьные строки организуются как массивы символов, последним из которых является символ \0, внутренний код которого равен нулю. (читать далее...)

стр. 141 142 143

4.12. Структуры и объединения

В языках Си/Си++ понятие структуры аналогично понятию записи (record) в Паскале. Это структурированный тип данных, представляющий собой поименованную совокупность разнотипных элементов. Тип структура обычно используется при разработке информационных систем, баз данных. (читать далее...)

стр. 144 145 146

4.13. Потоковый ввод-вывод в стандарте Си

Под вводом-выводом в программировании понимается процесс обмена информацией между оперативной памятью и внешними устройствами: клавиатурой, дисплеем, магнитными накопителями и т. п. Ввод — это занесение информации с внешних устройств в оперативную память, а вывод — вынос информации из оперативной памяти на внешние устройства. (читать далее...)

стр. 147 148 149 150 151 152

4.14. Объектно-ориентированное программирование в Си++

Основным отличием языка Си++ от Си является наличие в нем средств объектно-ориентированного программирования (ООП). Часто в литературе язык Си++ определяют именно как язык объектно-ориентированного программирования. (читать далее...)

стр. 153 154 155 156 157

4.15. Форматированный ввод-вывод в Си++

Для организации ввода-вывода в Си++ можно использовать средства языка Си (conio.h). Однако в Си++ существует стандартная библиотека классов, ориентированная на организацию потокового ввода-вывода. (читать далее...)

стр. 158 159

ГЛАВА 5. МЕТОДЫ ПОСТРОЕНИЯ АЛГОРИТМОВ

5.1. Основные понятия структурного программирования

Прошло уже более полувека со времени появления первой ЭВМ. Все это время вычислительная техника бурно развивалась. Менялась элементная база ЭВМ, росли быстродействие, объем памяти, менялись средства взаимодействия человека с машиной. (читать далее...)

стр. 160 161 162 163

5.2. Метод последовательной детализации

Суть метода была описана выше. Сначала анализируется исходная задача. В ней выделяются подзадачи. Строится иерархия таких подзадач (рис. 48). Затем составляются алгоритмы (или программы), начиная с основного алгоритма (основной программы), далее — вспомогательные алгоритмы (подпрограммы) с последовательным углублением уровня, пока не получим алгоритмы, состоящие из простых команд. (читать далее...)

стр. 164 165 166

5.3. Рекурсивные методы

Суть рекурсивных методов — сведение задачи к самой себе. Вы уже знаете, что как в Паскале, так и в Си существует возможность рекурсивного определения функций и процедур. Эта возможность представляет собой способ программной реализации рекурсивных алгоритмов. (читать далее...)

стр. 167 168

5.4. Методы перебора в задачах поиска

В данном разделе мы рассмотрим некоторые задачи, связанные с проблемой поиска информации. Это огромный класс задач, достаточно подробно описанный в классической литературе по программированию (см., (читать далее...)

стр. 169 170 171 172

5.5. Эвристические методы

Под эвристическими понимаются такие методы, правильность которых строго не доказывается. Они выглядят правдоподобными; кажется, что в большинстве случаев они должны давать верные решения. На уровне экспертной оценки алгоритма часто не удается придумать контрпример, доказывающий ошибочность или неуниверсальность метода. (читать далее...)

стр. 173

5.6. Сложность алгоритмов

Традиционно принято оценивать степень сложности алгоритма по объему используемых им основных ресурсов компьютера: процессорного времени и оперативной памяти. В связи с этим вводятся такие понятия, как временная сложность алгоритма и объемная сложность алгоритма. (читать далее...)

стр. 174 175

5.7. Методы сортировки данных

Существует традиционное деление алгоритмов на численные и нечисленные. Численные алгоритмы предназначены для математических расчетов: вычисления по формулам, решения уравнений, статистической обработки данных и т.п (читать далее...)

стр. 176 177 178

ГЛАВА 6. ЗАДАЧИ ПО ПРОГРАММИРОВАНИЮ

6.1. Задачи по теме «Линейные программы»

В этой главе представлена большая подборка задач, которые могут быть использованы для организации практических занятий по программированию как на Паскале, так и на Си++. Задачи систематизированы по конструкциям языка, охватывают 17 тем и сгруппированы в разделы. (читать далее...)

стр. 179 180 181 182 183

6.2. Задачи по теме «Развилка»

6.2.1. Текстовые задачи А 1. Даны три действительных числа. Возвести в квадрат те из них, значения которых неотрицательны, и в четвертую степень — отрицательные. 2. Даны две точки А(х1, у1) и В(х2, у2). (читать далее...)

стр. 184 185 186 187

6.3. Задачи по теме «Оператор выбора»

1. Написать программу, которая по номеру дня недели (целому числу от 1 до 7) выдает в качестве результата количество уроков в вашем классе в этот день. 2. Написать программу, позволяющую по последней цифре числа определить последнюю цифру его квадрата. (читать далее...)

стр. 188 189

6.4. Задачи по теме «Циклы»

6.4.1. Цикл с параметром 1. Имеется серия измерений элементов треугольника. Группы элементов пронумерованы. В серии в произвольном порядке могут встречаться такие группы элементов треугольника: 1) основание и высота; (читать далее...)

стр. 190 191 192

6.5. Задачи по теме «Целочисленная арифметика»

А 1. Дано натуральное число п. Найти сумму первой и последней цифры этого числа. 2. Дано натуральное число п. Переставить местами первую и последнюю цифры этого числа. 3. Даны два натуральных числа т и п (т ≤ (читать далее...)

стр. 193 194 195 196 197

6.6. Задачи по теме «Подпрограммы»

6.6.1. Нерекурсивные процедуры и функции А 1. Треугольник задан координатами своих вершин. Составить программу для вычисления его площади. 2. Составить программу для нахождения наибольшего общего делителя и наименьшего общего кратного двух натуральных чисел . (читать далее...)

стр. 198 199 200 201

6.7. Задачи по теме «Одномерные массивы»

А 1. В массив A[N] занесены натуральные числа. Найти сумму тех элементов, которые кратны данному К. 2. В целочисленной последовательности есть нулевые элементы. Создать массив из номеров этих элементов. (читать далее...)

стр. 202 203 204 205 206 207 208

6.8. Задачи по теме «Двумерные массивы»

6.8.1. Задачи на формирование массивов В задачах 1—12 сформировать квадратную матрицу порядка n по заданному образцу: 13. Построить квадратную матрицу порядка 2n: 14. (читать далее...)

стр. 209 210 211 212 213

6.9. Задачи по теме «Работа со строками»

1. Дана строка, заканчивающаяся точкой. Подсчитать, сколько слов в строке. 2. Дана строка, содержащая английский текст. Найти количество слов, начинающихся с буквы b. 3. Дана строка. Подсчитать, сколько в ней букв r, k, t. (читать далее...)

стр. 214 215 216 217

6.10. Задачи на «длинную арифметику»

1. Составить программу для сравнения двух n-значных чисел (п > 20). 2. Составить программу, суммирующую два натуральных n-значных числа, где п > 20. 3. Составить программу для вычисления степеней чисел вида аn, если а > (читать далее...)

стр. 218 219

6.11. Задачи по теме «Множества»

1. Известны сорта роз, выращиваемых тремя цветоводами: «Анжелика», «Виктория», «Гагарин», «Ave Maria», «Катарина», «Юбилейная». Определить те сорта, которые имеются у каждого из цветоводов, которые есть хотя бы у одного из цветоводов, которых нет ни у одного из цветоводов. (читать далее...)

стр. 220 221

6.12. Задачи по теме «Записи (структуры)»

1. Распечатать список учеников, фамилии которых начинаются на букву В, с указанием даты их рождения. 2. Из данного списка спортсменов распечатать сведения о тех из них, кто занимается плаванием. (читать далее...)

стр. 222 223 224

6.13. Задачи по теме «Файлы»

6.13.1. Типизированные файлы целых чисел 1. Заполнить файл последовательного доступа f целыми числами, полученными с помощью генератора случайных чисел. Получить в файле g те компоненты файла f, которые являются четными. (читать далее...)

стр. 225 226 227 228

6.14. Задачи по теме «Модули»

I. Реализовать в виде модуля набор подпрограмм для выполнения следующих операций над комплексными числами: 1) сложения; 2) вычитания; 3) умножения; 4) деления; 5) модуля комплексного числа; (читать далее...)

стр. 229 230 231

6.15. Задачи по теме «Динамические структуры данных»

1. Составить программу, которая вставляет в список L новый элемент F за каждым вхождением элемента Е. 2. Составить программу, которая вставляет в список L новый элемент F перед первым вхождением элемента Е, если Е входит в L. (читать далее...)

стр. 232 233 234

6.16. Задачи по теме «Графика»

Построить чертежи к следующим задачам. 1. В треугольной пирамиде построить сечение, параллельное основанию. 2. В треугольной пирамиде построить сечение, проходящее через боковое ребро и медиану основания. (читать далее...)

стр. 235 236

6.17. Задачи по теме «Объектно-ориентированное программирование»

1. Построить систему классов для описания плоских геометрических фигур: круга, квадрата, прямоугольника. Предусмотреть методы для создания объектов, перемещения на плоскости, изменения размеров и поворота на заданный угол. (читать далее...)

стр. 237 238 239 240 241

6.18. Большие проектные задания

1. Волчий остров (Ван Тассел Д. Стиль, разработка, эффективность, отладка и испытание программ. — М.: Мир, 1981) Волчий остров размером 20х20 заселен дикими кроликами, волками и волчицами. (читать далее...)

стр. 242 243 244 245

ПРИЛОЖЕНИЯ

Приложение 1 Турбо Паскаль. Модуль CRT

Таблица П1.1. Константы режимов работы Таблица П1.2. Константы цветов Таблица П1.3. Процедуры и функции (читать далее...)

стр. 246

Приложение 2. Турбо Паскаль. Модуль GRAPH

Таблица П2.1. Коды драйверов графических устройств Таблица П2.2. Константы графических режимов Примечание. Палитра С0 включает в себя следующие цвета: светло-зеленый, розовый и желтый; (читать далее...)

стр. 247

Приложение 3. Си++. Константы предельных значений

Таблица П3.1. Предельные значения для целостных типов — файл limits.h Таблица П3.2. Константы для вещественных типов — файл float.h (читать далее...)

стр. 248

Приложение 4. Библиотека функций языка Си/Си++

Таблица П4.1. Математические функции — файл math.h Таблица П4.2. Функция проверки и преобразования символов — файл ctype.h Таблица П4.3. Функции ввода-вывода для стандартных файлов — файл stdio.h (читать далее...)

стр. 249

Графическая библиотека в C++

Таблица П4.7. Функции для управления графической системой Таблица П4.8. Функции для получения изображения на экране Таблица П4.9. Функции для получения параметров изображения (читать далее...)

стр. 250

СПИСОК ЛИТЕРАТУРЫ

1. Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. — М.: Наука, 1988. 2. Березин Б.И., Березин С.Б. Начальный курс С и C++. — М.: ДИАЛОГ-МИФИ, 1996. 3. Бондарев В.М (читать далее...)

стр. 251 252

Домашний http сервер



сетьВ этой статье я хочу рассказать, как создать http сервер. Http сервер можно использовать под разные задачи, я хочу рассказать, как с помощью этого сервера предоставить доступ на определенные файлы расположенные у вас на компьютере.

Есть множество способов передачи файлов другим пользователям. Хорошо, если файл нужно передать одному пользователю, а если их много… Представим, что вам нужно передать файл сразу двадцати пользователям, и после этого сразу закрыть доступ к этому файлу,  если у вас есть «Яндекс диск», то это не проблема, а если нет… Сегодня я вам расскажу о замечательной программе «smallsrv», с помощью которой можно с легкостью поднять http server для передачи данных.

Установка small http server

Сначала нам понадобится сама программа, её качаем здесь.
small http server
Внимание:
Антивирус может ругнуться на неё, не обращаем внимание, вредоносного кода там нет.
После того, как вы скачали файл «shttp3.exe», запускаем его, появится окно:
соглашение с лицензией
Ставим галочку, что вы согласны с лицензионным соглашением, эта программа распространяется бесплатно, если её использовать дома, а если хотите её использовать в коммерческих целях, то нужно заплатить, хотя кто вам может запретить =)
Оставляем путь по умолчанию, ставить программу будем в корень диска «С» в папку «shttps».
Дальше можно ввести логин и пароль, нет никого смысла в этом, мы использовать её будем в течение непродолжительного времени. Нам же только отдать файл и сразу закрыть доступ.
Нажимаем кнопку «Install». Все, на этом процесс установки окончен.

Настройка small hhtp server

Заходим на диск «С» ищем там папку «shttps», заходим в неё и запускаем исполняющий файл «http.exe».
http.exe
В появившемся окне будет показываться информация, работает ли домашний http сервер и кто к нему подключен.  Там, где часики появилась иконка, нажимаем на неё правой кнопкой мыши, и появится контекстное меню, в котором нажимаем на пункт «settings…».
settings
В появившемся окне нужно нажать на кнопку «HTTP».
меню настройки сервера
Порт, по которому будет разрешен доступ на ваш сервер – я указываю обычно другой порт, для того, чтобы себя обезопасить, и избежать недоразумений, по умолчанию стоит порт 80, меняем его на порт «7777». В правом верхнем углу окна, есть две кнопки «Оk» и «Cancel», нажимаем «Ок», окно закроется после этого. Теперь давайте проверим, работает ли ваш сервер. Открываем браузер и пишем в вдресной строке: http//127.0.0.1:7777 нажимаем Enter, должно открыться такое вот окно.
После чего, нужно проверить, доступен ли наш сервер из интернета, для этого заходим на сайт http://2ip.ru и узнаем ваш внешний ip адрес.
внешний ip адрес
Там будет написано: Ваш IP адрес: х.х.х.х, копируем его и вставляем в адресную строку вашего браузера, либо просто набираем и на конце добавляем после двоеточия порт, к примеру: «http://128.74.25.136:7777».

Проброс порта на d-link dir-300

У меня дома интернет раздает роутер dir -300, поэтому если я укажу восьмидесятый порт, то пользователи при заходе на мой сервер, попадут в админку моего роутера, поэтому я меняю порт на 7777, чтобы этого избежать.
Если у вас тоже стоит роутер, вам нужно пробросить этот порт, иначе ваш сервер из интернета не будет доступен.
Заходим по адресу http://192.168.0.1 - на ваш роутер, вводим логин и пароль и попадаем в административную панель роутера.
административная панель роутера
  1. Расширенные настройки.
  2. Перенаправление портов.
  3. Дальше чуть ниже будут правила, на самом первом ставим галочку и приступаем к заполнению остальных полей.
  4. Имя – любое имя на свой вкус.
  5. IP – адрес – нужно ввести ип адрес вашего компьютер, его можно посмотреть следующим образом.
Нажимаем сочетание клавиш Win+R, в появившемся окне вводим «cmd», жмем кнопку «Ок».
выполнить
У вас откроется командная строка, набираем там команду: «ipconfig», и нажимаем интер.
ipconfig
Вы можете наблюдать ваш ip адрес.
6. Внешний порт – указываем 7777
7. Внешний порт – указываем 7777
8. Внутренний порт – указываем 7777
9. Тип трафика – выбираем «любой»
10. Жмем кнопку «Сохранить настройки»
На этом проброс порта на роутере d-link dir-300 окончен. Теперь ваш сервер доступен из интернета.

Выкладываем файл для скачивания

Зайти пользователи на ваш сервер могут, но как мы можем наблюдать там пусто.
Для того, чтобы выложить какой-либо файл, нужно зайди на диск «С» в папку «shttps», и там будет папка «www», в неё то и надо положить файл, который вы хотите раздать сразу большому количеству людей.
раздача файлов
В итоге вот, что получится.

Закрываем доступ

Чтобы закрыть доступ на те файлы, которые вы выложили на всеобщее обозрение, нужно просто там, где часики есть иконка с названием "Small server", нажимаем на неё правой кнопкой мыши, появится контекстное меню, в котором нажимаем на пункт «Exit».

вторник, 1 декабря 2015 г.

Оптимизация Windows

Оптимизация Windows

Краткое описание

Рекомендации как ускорить работу Windows, уменьшить время загрузки системы и увеличить ее безопасность.

Введение

Позволю себе предположить, что многие владельцы ноутбуков хотели бы, чтобы их ноутбуки работали быстрей. Для этого нужно предпринять такие меры:
  1. Установка и обновление драйверов;
  2. Обновление Windows и установка Service Pack;
  3. Чистка автозагрузки от ненужных программ;
  4. Оптимизация работы жесткого диска;
  5. Отключение ненужных служб.
Существуют также и другие способы. Среди них можно выделить разгон процессора/видеокарты, различного рода апгрейды (замена комплектующих ноутбука) ну и различные тонкие настройки системы. Эти способы будут описаны в следующих материалах.
И так, рассмотрим каждый из приведенных выше способов.

1. Установка и обновление драйверов

Дистрибутив Windows содержит большое количество стандартных драйверов. При установке системы нужные из них инсталлируются и система может работать с тем или иным оборудованием. Проблема заключается в том, что зачастую стандартные драйвера являются устаревшими. Также к некоторым устройствам у Windows вообще драйверов нет. Как эту проблему решить и установить нужные драйвера описано в этом материале: Поиск и установка драйверов на Windows.
Особое внимание стоит уделить обновлению драйверов на видеокарту. Как это сделать вы можете прочитать в этих материалах: Модификация драйвера видеокарты от ATI для установки на ноутбук и Модификация драйвера видеокарты от nVidia для установки на ноутбук. Остальные драйвера можно и не обновлять. Как говориться: "Работает? Не трогай!".
Когда все драйвера стоят, можно переходить к следующему шагу.

2. Обновление Windows

Может это звучит несколько банально, но систему обновлять стоит. Зачастую исправляются уязвимости и ошибки, но иногда и происходят небольшие увеличения скорости работы.
Если у вас Windows Vista или Windows XP, то очень рекомендуется установить Service Pack'и к ним. Это по сути большие наборы обновлений. Особенно актуально для Windows Vista. Скорость работы при установке Service Pack 1 или 2 существенно повышается и исправляются многие ошибки. Скачать Service Pack 3 для Windows XP 32-bit можно по ссылке скачать. Service Pack 2 для Windows Vista можно скачать по ссылкам скачать / скачать (32-bit) скачать / скачать (64-bit)
Кроме Service Pack стоит также поставить DirectX. Последнюю версию можно скачать на все том же сайте Microsoft или по этой ссылке: скачать / скачать.
Рассмотрим как же устанавливать обновления на Windows:

Установка обновлений на Windows XP

Сначала нужно зайти в Панель управления и выбрать пункт Автоматическое обновление:
Выбор Автоматичческого обновления в Windows Включем его:
Включение автоматического обновления Когда обновления будут загружены в фоне, возле часов всплывет такая подсказка:
Обновления для вашего ноутбука готовы Щелкаем по этой табличке:
Выберите способ установки обновлений Выбираем Выборочную установку и щелкаем Далее:
Выбор обновлений Windows Выбираем какие обновления желаем установить и щелкаем Установить. Во время установки может быть необходимо согласится с условиями:
Лицензионное соглашение После установки обновлений можно перезагрузить ноутбук. Рассмотрим теперь процесс обновления на Windows Vista и Windows 7

Установка обновлений на Windows Vista и Windows 7

Установка обновлений на Windows Vista и Windows 7 по сути ни чем не отличаются. Следовательно, их описание можно объединить.
Заходим в Панель управления и запускаем Центр обновления:
Запуск Центра обновления Windows Щелкаем по ссылке справа Проверка обновлений. Ноутбук, естественно, должен быть подключен к интернету.
Проверка обновлений Windows По окончанию поиска нажимаем Просмотр доступных обновлений чтобы выбрать какие ставить, а какие нет:
Просмотр доступных обновлений Выбираем нужные обновления и нажимаем Установить:
Установка обновлений Соглашаемся с лицензионным соглашением:
Лицензионное соглашение После установки обновлений желательно перезагрузить ноутбук. Также с обновлениями часто могут идти и нужные драйвера.
С обновлениями закончили. Идем дальше.

3. Чистка автозагрузки от ненужных программ

Так уж сложилось, что многие программы и драйвера очень любят прописываться в автозагрузку. Иными словами, они загружаются вместе с Windows. Это чревато тем, что Windows из-за них дольше загружается, да и запущенная программа занимает определенный объем памяти и ресурсы процессора. Среди таких программ есть нужные (антивирусы, например), есть и не очень. Рассмотрим как же убрать ненужные программы из автозагрузки и ускорить таким образом ноутбук.
Для решения такого рода задач существует множество программ. Наиболее функциональной считается Autoruns. В этой же статье мы будем рассматривать управление автозагрузкой с помощью Конфигурации системы.
Сначала запускаем окно Выполнить:
Запускаем строку Выполнить Вводим там команду msconfig и нажимаем Enter:
msconfig Должно открыться окно с Конфигурацией системы. Переходим на вкладку Автозагрузка:
Настройка автозагрузки Windows Отмечаем программы, которые должны загружаться вместе с Windows. Понять где и какая программа можно с помощью колонок Элемент автозагрузки и Команда.
Обсуждение на форуме: если вы не знаете что отключать, а что нет, то обращаемся в эту ветку форума: Решение проблем с настройкой Windows.
Когда закончили, нажимаем применить и перезагружаемся:
Перезагружаем ноутбук Для управления автозагрузкой можно использовать утилиту CCleaner. Подробней описано в этой статье: Очистка Windows от мусора с помощью CCleaner.
С автозагрузкой разобрались. Идем дальше.

4. Оптимизация работы жесткого диска

В этой части будут рассмотрены такие моменты:
  1. Отключение индексирования диска и дефрагментации по расписанию;
  2. Включение кеширования;
  3. Включение DMA.

4.1 Отключение индексирования диска для быстрого поиска.

Эту опцию стоит отключить если у вы используете файловую систему NTFS. Дело в том, что содержимое диска постоянно индексируется. Это позволяет быстрей проводить поиск файлов и папок. Если вы поиском не пользуетесь, то эту опцию стоит отключить. Для этого нужно перейти в свойства диска:
Свойства диска Снимаем галочку с Индексировать этот диск для более быстрого поиска и нажимаем Применить:
Отключаем индексирование Подтверждаем изменение атрибутов Пропускаем все ошибки Windows Vista и Windows 7 по-умолчанию проводят дефрагментацию по расписанию. Дефрагментация - это штука очень полезная, но ее лучше запускать вручную. Чтобы отключить автоматическую дефрагментацию, нужно в свойствах диска перейти на вкладку Сервис и нажать на Выполнить дефрагментацию:
Выполнить дефрагментацию Снимаем галочку и щелкаем ОК:
Отключаем автоматическую дефрагментацию Вот и все. Если есть желание, то на этой вкладке можно настроить автоматическую дефрагментацию так, как вам удобно.

4.2 Включение кеширования

Что такое кеширование и какой от него толк вы можете прочитать в этом материале: Технология NCQ. В двух словах, пользы от кеширования много. Оно позволяет существенно ускорить работу с жестким диском.
Рассмотрим как же его включить. Для этого нужно открыть Свойства диска и перейти на вкладку Оборудование:
Выбор жесткого диска Выбираете ваш жесткий диск и нажимаете на кнопку Свойства. В окошке свойств переходим на вкладку Политика:
Политика использования жесткого диска Ставим там галочки и нажимаем ОК. Теперь кеширование включено.

4.3 Включение DMA

Технология DMA (Direct Memory Access) по-умолчанию должна быть включена, но бывают такие случаи, когда она выключена. В этом случае может тормозить воспроизведение музыки, фильмов, да и ноутбук в целом.
Чтобы проверить включена ли она, нужно зайти в Диспетчер устройств. В Windows Vista для этого нужно зайти в свойства компьютера:
Свойства компьютера А потом перейти по ссылке слева:
Диспетчер устройств Нас интересуют IDE ATA/ATAPI контроллеры. Заходим в их свойства:
Свойства ATA-контроллеров Как видим, на вкладке Дополнительные параметры галочка стоит:
DMA включен Это значит, что все в порядке.
С винчестером разобрались. Переходим к службам.

5. Оптимизация системных служб

В Windows Vista появилась такая технология как UAC, которая отличается особой назойливостью. Постоянные диалоговые окна с просьбой подтвердить то или иное действие являются результатом ее работы. В Windows 7 ее чуть переделали, но все равно иногда ее работа раздражает.
Чтобы выключить UAC, нужно зайти в Панель управления и выбрать пункт Учетные записи пользователей:
Настройка учетных записей пользователей Дальше переходим по ссылке:
Отключение UAC И снимаем галочку:
Снимаем галочку Щелкаем ОК и перезагружаемся. Вот и все.
Рассмотрим теперь настройку системных служб. Служба - это небольшая программа, которая работает в фоне и выполняет определенную функцию. Настройка служб является довольно сложной задачей и требует специальных знаний. От этой операции вполне можно отказаться.
Чтобы перейти к настройке служб Windows, щелкаем правой кнопкой на Компьютере (Моем компьютере) и в меню выбираем Управление:
Управление В окне слева выбираем Службы:
Службы Windows Вот в этом окне и настраиваются службы. Настройка служб является сугубо индивидуальным занятием. Подробней о службах вы можете узнать в этом материале: Подробная информация по всем службам.
Вот и все. Спасибо за внимание.

понедельник, 30 ноября 2015 г.

Предпосылки стать программистом

Предпосылки стать программистом

В течение последних пяти лет предоставление услуг по разработке программного обеспечения для западных компаний стало единственным скоростным социальным лифтом в Украине. Безусловно, имеется еще архитектура, медицинская практика (но тут есть некоторые нюансы), возможность открыть собственный бизнес (но тут есть очень много нюансов) и т. д.

У данного явления существует целый ряд причин. Ниже приведены некоторые из них:

украинский менталитет хорошо подходит для индивидуальной творческой работы (см. “Хуторянсво победило кастовость”);
программист, как и коллектив программистов, сам является собственником орудий труда (своих знаний), рейдерский захват которых осуществить невозможно в силу их неотъемлемости;
написание программного кода не требует развитой мышечной памяти, как у хирургов или ювелиров, поэтому ему можно научиться гораздо быстрее;
дефицит программистов на глобальном рынке труда.
Стать программистом можно различными способами. В данной статье описываются пути, наиболее оптимальные для людей старше 25 лет, обладающих техническим средним профессиональным или высшим образованием, готовые изыскать полтора года для полноценного самообразования.

Подходы в изучении программирования

Программирование – это ремесло, предусматривающее работу головой и руками. Программист составляет композицию из некоторых абстракций, подчиняющихся четким техническим законам, и описывает ее в виде текста, состоящего из стандартного набора программных инструкций. Поэтому данная работа является чем-то средним между ремонтом автомобиля и написанием журналистских очерков.

Суть любого ремесла в том, что его трудно освоить, исключительно посещая лекции. Нужно хорошо владеть всеми его инструментами и, желательно, чтобы за качеством работы следил кто-то еще более опытный, обладающий при этом педагогическими навыками.

Если обобщить, то стандартный путь обучения IT-специальности выглядит следующим образом:

базовая подготовка;
практикум программирования;
специализация по языку программирования и технологиям.
В Украине на работу в компаниях, разрабатывающих ПО, берут по результатам устного собеседования, на котором иногда необходимо решить несколько небольших задач письменно. Поэтому для получения первого рабочего места можно не следовать в точности по указанному пути, а целенаправленно готовиться именно к собеседованию, а точнее:

участвовать в подготовительных программах для представителей других специальностей, организованных компаниями, входящими в первую десятку украинской IT-индустрии (подробную информацию можно получить, обратившись непосредственно в представительства данных компаний, также см. Samsung Fresh Graduate Recruitment);
проходить альтернативные on-line-курсы для начинающих, составленные некоторыми программистами по собственной инициативе (см. www.javarush.ru);
пользоваться on-line-курсами, предлагаемыми популярными Интернет-ресурсами (см. www.intuit.ru, www.academicearth.org, www.coursera.org и т. д.);
читать книги по программированию, однако следует помнить, что издания “для чайников”, как правило, поверхностны, а полноценные учебники трудно воспринимаются даже опытными программистами, поэтому их следует просто учить близко к тексту и уметь пересказать каждую главу (см. пример списка таких книг);
читать образовательные блоги, посвященные языкам программирования (см. Блог Алены С++);
искать в Интернете вопросы с собеседований по конкретному языку программирования и находить статьи, раскрывающие каждый вопрос в отдельности (см. вопросы по С++);
участвовать в on-line-соревнованиях по написанию программного кода, что позволит эффективно решать простые задачки и технически обосновать выбранные пути решения (см. пример on-line-арены для соревнований по написанию кода);
браться за выполнение небольших заказов за минимальную цену на freelance-сайтах с целью приобретения базового опыта (см. www.freelance.ru, www.guru.com и т. д.);
в случае возникновения трудностей не стесняться задавать вопросы на программистских форумах - там менее чем за час можно получить бесплатный квалифицированный ответ на интересующий вопрос (см. www.rsdn.ru, www.stackoverflow.com и т. д.).
Многие делают ошибку, считая, что для того, чтобы стать программистом достаточно поступить в ВУЗ или записываться на коммерческие курсы. Дело в том, что украинские ВУЗы не готовят специалистов, удовлетворяющих потребностям рынка (хотя после обучения в них и нескольких лет практики действительно можно стать хорошим специалистом). А большинство платных курсов стараются быть похожими на государственные ВУЗы, чтобы их стиль преподавания был понятен родителям, которые платят за обучение своих детей. Хотя подобные курсы, в качестве дополнения ко всему вышесказанному придутся весьма кстати.

Крупные украинские IT-компании в связи с нехваткой кадров создали собственные образовательные программы, некоторые из которых бесплатные. Часть из них накладывает ограничения на возраст участников или набор допускаемых специальностей. Но в некоторых из предлагаемых программ может принять участие каждый при условии прохождения вступительного теста, который обычно состоит из заданий на логику и задач на знание основ программирования. Подобные образовательные программы могут включать прохождение курсов и стажировку в отделениях компании, при успешном завершении которой участник получает предложение о трудоустройстве. В среднем четверть от подавших заявку на участие (приславших свои анкеты) становятся полноценными работниками.

В случае обращения в центральные офисы украинских разработчиков ПО с целью получить информацию об их подготовительных программах для представителей других специальностей следует помнить, что не все сотрудники компаний знают, что их работодатель предоставляет такие возможности, поэтому желательно поинтересоваться телефонами отдела, организовывающего курсы и тренинги, и затем там уточнить.

Участие в подобных программах является наиболее эффективным способом стать программистом. Но чтобы на них попасть, нужно самостоятельно приобрести некоторые базовые знания. Поэтому наиболее короткий путь получения IT-профессии в отличие от описанного выше стандартного выглядит так:

самостоятельно пройти несколько теоретических on-line-курсов по алгоритмам и структурам данных на сайте www.coursera.org (как правило, большинство не доходит до конца этого этапа в силу угасания собственной мотивации);
получить первый опыт написания программного кода и изучить определенный язык программирования с помощью коммерческих или бесплатных практических on-line-курсов (например, www.javarush.ru);
стать участником образовательных программ крупных IT-компании с последующим прохождением неоплачиваемой стажировки и трудоустройством.
Если нет возможности следовать данному пути по каким-либо причинам (например, из-за отсутствия необходимых образовательных курсов по месту жительства), то рекомендуется сначала воспользоваться несколькими on-line-тренингами, а затем участвовать в сетевых соревнованиях по программированию и одновременно заниматься freelance-разработкой, не выходя из дома. Однако данный подход гораздо более сложный и длительный.

Низкий уровень английского не является помехой в изучении программирования. Техническую документацию или переписку с заказчиками можно переводить с помощью Google Translate. В случае необходимости устного общения достаточно заучить несколько фраз приветствия и просьбу направлять все вопросы на email. К тому же в Украине во многих программистских командах общение с клиентами ведет руководитель или специальный менеджер, поэтому требования хорошего владения английским для соискателя могут быть чисто формальными.

Перспектива трудоустройства

Многие относятся скептически к идее переподготовки программистов из представителей других специальностей, потому что считают, что спрос на разработку программного обеспечения в Украине недостаточно велик. На самом деле количество сотрудников, задействованных в отрасли, растет на 20 – 30 % ежегодно и будет продолжать расти в течение следующих нескольких лет. Причины у этого явления следующие:

крупные украинские IT-компании заслужили доверие у крупных западных корпораций благодаря своей эффективной работе, поэтому каждый год у них появляются новые заказчики уровня General Electric или Shell;
мировой кризис вынуждает западные компании искать более дешевую рабочую силу, в том числе высококвалифицированную (на зарплате наших программистов они экономят миллиарды долларов в год);
большинство экспертов считают, что украинские и российские программисты выигрывают за счет качества (но не за счет объема продукции) у своих основных индусских конкурентов;
за последние несколько лет в Украине “созрело” достаточное количество специалистов, способных возглавить команды, создаваемые из новичков, поступающих в отрасль;
руководители некоторых крупных украинских компаний, разрабатывающих ПО, высказывают намерения в будущем обогнать Индию по количеству программистов, т. е. увеличить их численность в Украине в 10 раз.
Особенности изучения программирования

Для тех, кто решил попробовать свои силы в разработке ПО, следует знать, что востребованные языки программирования рассчитаны для применения в больших коммерческих системах, поэтому их невозможно глубоко освоить без обширной практики.

Многие новички допускают типичные ошибки, неверно используя часть конструкций языков, на которых пишутся программы, или отказываясь от стандартных решений в пользу самостоятельно изобретаемых “велосипедов”. Ниже приводятся рекомендации, которые позволяют на начальном этапе избежать основных ошибок при изучении алгоритмов и конструкций языков программирования:

следует запоминать названия большинства алгоритмов или языковых конструкций, а также их синтаксис или структуру (последнее желательно, но не обязательно);
необходимо иметь понятие об их альтернативах и всех случаях использования, даже самых редких;
нужно уметь написать без обращения к справочнику (пусть даже с ошибками синтаксиса) несколько небольших примеров с применением данных конструкций;
требуется знать, как они будут вести себя при разных наборах входных данных или при очень большом потоке данных.
Возникает логичный вопрос, какой язык программирования выбрать? Рациональнее всего сначала ознакомиться с Java или C#, как с самыми оплачиваемыми и относительно несложными в обучении языками написания кода. Если не получается, тогда следует попробовать изучить Python. Данный язык предназначается для быстрой и одновременно эффективной разработки программ.

Через полтора года интенсивных занятий можно будет составить резюме, указав там базовой опыт и/или перечень написанных учебных программ, и подать заявку на стажировку либо начать проходить собеседования в компаниях, которым нужны Junior-программисты.
Опрошенные руководители команд разработчиков ПО согласились с тем, что за несколько месяцев можно стать программистом при условии усердия и выделения на обучение минимум четырех часов в день. Пусть это будет непросто, но это возможно, особенно, когда есть мотивация и вера то, что ты на правильном пути.