Об авторе
Всем привет!
Меня зовут Иосиф Дзеранов. Я программист, инженер-разработчик со стажем более 10 лет. Работал в крупных компаниях (Сбербанк, Mail.ru). Прошел путь от начинающего до старшего разработчика. Я знаю, как добиться такого же успеха.
Коротко про мои достижения:
• Преподаватель и сооснователь онлайн-школы BeeGeek.
• Сертифицированный преподаватель IT школы Samsung
• Четверть финалист чемпионата мира по олимпиадному программированию ACM ICPC
• Создатель центра олимпиадной подготовки СОГУ
• Победитель VK FELLOWSHIP 2020
• Победитель в конкурс “Умник” при фонде содействия инновациям
• Создатель более 25 онлайн курсов по программированию и информатике
• Семьянин. Есть двое прекрасный детей
Контакты для связи:
Почта: iodzeranov@mail.ru
Telegram: (t.me/JosefDzeranov).
Кому адресована эта книга
Эта книга отлично подойдет как новичкам, так и программистам с любым уровнем подготовки.
Первым этот курс поможет разобраться с основами программирования и определиться с дальнейшей деятельностью в IT-сфере; вторым – обогатить багаж знаний и отработать полученные навыки на практике.
Как читать эту книгу
Данная книга является печатной версией онлайн курса.
Обучающие модули расположены от простого к сложному, что предполагает последовательное и вдумчивое чтение.
Программирование требует практики, поэтому для чтения этой книги понадобится компьютер или ноутбук – так вы сможете сразу отрабатывать теоретические навыки на практических упражнениях.
Книга также может быть использована в качестве справочника для того, чтобы освежить знания в определенной теме.
Благодарности
Написание книги – это сложный и трудоемкий процесс, который отнял у меня, а значит и у моей семьи, большое количество времени и сил.
Я безмерно благодарен своим любимым девочкам – супруге Элизе и дочке Анне – и любимому сыну Лео. Благодаря им у меня есть желание заниматься любимым делом, развиваться и становиться лучше.
Спасибо моим родителям, которые всегда верили в меня и поддерживали во всех начинаниях.
Также хочется сказать спасибо всему моему окружению, ведь окружение во многом определяет, кем мы становимся и куда двигаемся.
И благодарю всех моих учеников, которые мотивировали и вдохновляли меня выпустить эту книгу.
Спасибо!
Сообщество разработчиков C#
Много времени размышлял о том, как сделать удобный формат общения с моими учениками. Создать так называемую "движуху", чтобы участники:
• получали максимальный быстрый ответ на свои вопросы
• делились знаниями между собой и создавали свою сеть знакомых с такими же интересами
• мотивировались, смотря друг на друга
• делали совместные проекты
•могли вместе готовиться к собеседованиям
Чтобы я
• смог доносить новую и полезную информацию до учеников
• максимально быстро и удобно
• смог делать анонс новых курсов и мероприятий максимально
•быстро и максимально эффективно.
Для этого я создал:
1. https://t.me/csharp_publics – личный канал для публикаций полезного контента
2. https://t.me/csharp_discussions – чат для обсуждения вопросов и полезного контента, который был опубликован в личном канале.
Если ты хочешь
• задать вопрос по теме программирования
•делиться знаниями с другими участниками
• сделать проект и хочешь найти коллегу
• быть в теме программирования, алгоритмов и структур данных, собеседований
– то смело ВСТУПАЙ В КАНАЛЫ.
Со своей стороны обещаю годный контент (если будет обратная связь) и никакого спама (всех спамеров и тех, кто будет писать не по теме буду удалять). Жду тебя. Ты сможешь задать любой вопрос.
Приглашайте всех друзей, знакомых, учеников, кто интересуется программированием!
До встречи!
В этой книге я научу Вас программировать. Сделаем первый шаг: изучим все базовые конструкции, которые нужны каждому программисту на любом языке программирования (ЯП).
Книга состоит из 6 модулей:
1. Типы данных. Переменные;
2. Условный оператор;
3. Оператор цикла;
4. Строки и символы;
5. Массивы;
6. Функции.
Это то, что должен знать любой программист. Если представить, что дом – это старший программист, то эта книга – фундамент.
Модули расположены именно в том порядке, в котором нужно проходить: от простого к сложному. Не советую менять порядок изучения тем, так как информация наслаивается друг на друга.
Формула, которая помогает добиваться целей:
Постоянство усилий и регулярность занятий гарантируют результат.
Уровень вашей нынешней подготовки неважен, потому что вся необходимая теория есть в книге. Объем практики позволяет теорию проработать и запомнить. А самое главное – применить ее на практике.
Книга позволит с легкостью и удовольствием выучить синтаксис языка программирования C#, отработать какие-то непростые вещи до автоматизма, написать первые мини-проекты.
В то же время подчеркну, что книгу можно проходить на любом удобном вам ЯП, эта возможность в нем предусмотрена. Так что для решения задач ЯП вы можете выбрать сами.
Дорогу осилит идущий!
Введение
Зачем изучать программирование?
Во-первых, это интересно.
Во-вторых, программирование здорово облегчает жизнь во многих профессиях.
В-третьих, можно хорошо зарабатывать и заниматься в тёплых уютных офисах современными технологиями.
Как изучать программирование?
Самое сложное в нашей области – это первые шаги. Я научу вас базовым вещам в программировании. Мы напишем сотни несложных и интересных программ, а также будем строить свои собственные алгоритмы. С таким опытом в дальнейшем вы сможете самостоятельно справиться и с более сложными задачами.
Чему учит книга?
После этой книги вы сможете решать задачи по программированию, выиграть несложную олимпиаду по информатике, а также начать свой профессиональный путь в качестве программиста.
Язык программирования
Мы будем изучать язык программирования C#, так как, по моему мнению, язык очень прост и хорошо подходит для новичков. На сегодняшний момент C# один из самых мощных, быстро развивающихся и востребованных языков в ИТ-отрасли. На нем пишутся самые различные приложения: от небольших десктопных программ до крупных веб-порталов и веб-сервисов, обслуживающих ежедневно миллионы пользователей.
Свобода выбора
Однако данная книга не привязывается к одному языку программирования, так как в ней проходят базовые понятия и конструкции, которые включают в себя все современные языки. Мы не будем вас обязывать сдавать задачи на языке C#, вы будете сами выбирать, на каком языке сдавать задачи.
Как построена книга?
Она состоит из лекций, к каждой из которых есть набор задач – их вам предстоит решать в тестирующей системы. Задачи будут проверяться автоматически и сразу.
Основные понятия
Алгоритм – это последовательность действий для достижения поставленной цели. Это план наших действий.
Язык программирования – это язык, который понимает компьютер. Есть русский, английский и другие языки, которые понимаем мы, а есть другие языки – языки программирования, которые понимает компьютер.
Программа – алгоритм, записанный на некотором языке программирования.
Этапы решения задачи
Теперь давайте разберем этапы решения задачи:
1. Постановка задачи – описание самой задачи;
2. Формализация – перевод на математический язык;
3. Алгоритмизация – придумывание алгоритма, который решает задачу;
4. Программирование – написание кода программы;
5. Тестирование – проверка работоспособности программы и корректности выходных данных.
Начинающие программисты пытаются пропустить последний этап. Я не советую так делать. Стоит сначала проверить самому программу на корректность работы, а потом сдавать в тестирующую систему. Постарайтесь придумать такие тесты, которые учитывают все различные ситуации.
Настоятельно советую всегда решать задачи по этим этапам. Так вы сэкономите массу времени и напишете правильные программы без ошибок.
Среда разработки
Среда разработки (IDE) позволяет писать код, компилировать (собирать у компилятора в "голове") его и отлаживать (искать ошибки). Она удобна тем, что в ней есть множество встроенных функций, которые, например, за вас заполнят стандартные строки кода. IDE подчеркнет ошибки синтаксиса и покажет причину, по которой программа не работает. Среда разработки помогает найти эту ошибку с помощью отладки.
При использовании языка C# я рекомендую среду разработки Visual Studio.
Установка Visual Studio
Во время установки программы нужно выбирать версию Community Edition. Это бесплатный инструмент для некоммерческого использования.
Когда откроется окно выбора компонентов, то единственный флажок нужно поставить у компонента "Разработка классических приложений .Net".
Этого достаточно, если вы совсем новичок. Компоненты можно будет добавить по мере необходимости.
Создание проекта
Запустите Visual Studio и нажмите «Создание проекта»:
В появившемся меню выберите «Консольное приложение:
Затем назовите проект на английском языке в поле «Имя проекта» (показано красной стрелкой), укажите куда нужно сохранять проект в «Расположение» (указано зеленой стрелкой) и нажимайте "Далее":
Первая программа
Visual Studio сгенерировала следующий шаблон кода:
Замените содержимое файла на:
using System;
namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
// Здесь будем писать код программы
}
}
}
И это уже готовая программа, только она не делает ничего.
Не углубляясь в подробности, посмотрим, из чего состоит программа. В первой строке записана команда using. Данная команда означает, что мы хотим обратиться к библиотеке, содержащей разные полезные вещи, которые написали за нас другие программисты. В данном случае есть библиотека System, с помощью которой наша программа сможет общаться с внешним миром.
Перейдем сразу к тому, что нам точно понадобится.
static void Main(string[] args)
{
// Здесь будем писать код программы
}
Main – это основная функция нашей программы, она будет запускаться автоматически при запуске программы. Когда-нибудь в наших программах будет несколько функций, и тогда первой из них будет запускаться Main. Пока же это основная и единственная наша функция. Внутри фигурных скобок мы будем писать свои программы. Вся логика программ будет начинаться после открывающей фигурной скобки и заканчиваться – закрывающей фигурной скобкой.
Сейчас внутри фигурных скобок содержится комментарий. Он начинается с //, после чего до конца строки можно писать пояснения к программе. Комментарии не влияют на логику программы. Они нужны для комментирования кода. В будущем на месте данного комментария мы будем писать осмысленную программу.
Hello, World!
В программировании есть такая традиция – изучение любого языка начинается с написания программы, которая выводит на экран сообщение «Hello, World!»:
using System;
namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
Console.Write("Hello, World!");
}
}
}
У нас появилась новая строка:
Console.Write("Hello, World!");
Сonsole – это объект, который отвечает за консоль. Консоль – это черное окошко, которое появляется при запуске программы. Операция Write как раз и означает написать. «Console Write» переводится «Написать на консоль».
Текст для вывода на экран идет внутри круглых скобок и в двойных кавычках. Не забывайте ставить точку с запятой (;) там, где она есть в примерах кода. Почти после всех операторов в языке C# ставится точка с запятой (;).
Следует помнить:
Строка выведется ровно такая,
как указали внутри кавычек,
со всеми пробелами и символами.
Запуск программы
Давайте запустим нашу программу. Для этого нажмем комбинацию клавиш CTRL и F5. Если в программе есть ошибка, система сообщит нам, что запуск не удался. Ошибки будут перечислены в окне «Список ошибок». Если всё правильно, то появится чёрное окно консоли с надписью "Hello, World!":
Чтобы закрыть консоль, необходимо нажать любую клавишу.
Ввод-вывод информации. Типы данных
Console.WriteLine
Мы уже знаем, что выводить строки можно с помощью команды Console.Write(). Есть еще похожая команда Console.WriteLine(). Она не только выводит строку,
но и переводит после этого курсор в консоли на новую строку.
Для лучшего понимания рассмотрим два примера.
static void Main(string[] args)
{
Console.Write("Hello"); // вывод
Console.Write("World!"); // вывод
}
Получим строку:
HelloWorld!
Дело в том, что после команды
Console.Write("Hello");
курсор в консоли остается на той же строке. Туда же вторая команда дописывает строку "World!". Таким образом и получается склеенная строка.
Запомните:
// – это комментарий. Это текст, который
не воспринимается и не выполняется программа. Это нужно нам, чтобы отметить дополнительную информацию о происходящем в коде.
А если используем Console.WriteLine():
static void Main(string[] args)
{
Console.WriteLine("Hello"); // вывод и перенос на новую строку
Console.WriteLine("World!"); // вывод и перенос на новую строку
}
Вывод будет следующим:
Hello
World!
Дело в том, что после команды
Console.WriteLine("Hello");
курсор передвинулся на следующую строку. И уже на новой строке выводится "World!".
Вывод информации
С помощью этих команд можно выводить числа или результат вычисления выражений. Например:
static void Main(string[] args)
{
Console.WriteLine(26);
Console.WriteLine(1024 + 48); // 1072
Console.WriteLine(5 + 8 * 2); // 21
Console.Write((5 + 8) * 2); // 26
}
Через // указано то, что будет после исполнения команды. То есть вывод будет следующим:
26
1072
21
26
Как вы могли заметить, каждый результат выводится на каждой строке. При этом операции над числами внутри команды осуществляются по правилам математики: числа складываются, умножаются и так далее.
Форматированный вывод
Довольно часто есть необходимость выводить числа и строки вместе. Просто вывод чисел для пользователя ничего не означает. Иногда надо бывает перед или после числа добавить объяснения.
Для этого строку нужно обозначить в кавычках (чтоб компилятор ее "узнал" как строку), а между числом и строкой нужно поставить знак плюс (+), который тут просто приклеивает строку и число, а не считает математически. Результатом такой склейки получается СТРОКА.
Для лучшего понимания рассмотрим код:
static void Main(string[] args)
{
Console.WriteLine("5 + 7 = " + 12); // 5 + 7 = 12
Console.WriteLine(5 + " + " + 7 + " = " + 12); // 5 + 7 = 12
Console.WriteLine(3 + " " + 6); // вывод двух чисел через пробел, то есть 3 6
}
Заметьте, что пробел (" ") – это тоже строка, причем не пустая. Пример показывает, что один и тот же результат вывода можно достичь разными способами.
Заметьте, что как при сложении числа и строки, так и при сложении строки и числа, результатом будет строка.
Примечания:
1. То, что мы пишем в круглых скобках у команд Console.Write() и Console.WriteLine(),называется аргументами или параметрами команды.
2. Все команды, которые мы уже рассмотрели и которые в будущем рассмотрим, записываются в приведенном в лекциях формате, другое написание недопустимо, так как в C# строчные и заглавные буквы различны.
3. Заметьте, что в конце строки пишется точка с запятой (;). Это обязательно. Такой синтаксис языка C#.
4. Команда Console.WriteLine() с пустым списком аргументов (пустые круглые скобки) просто вставляет новую пустую строку. Например:
Console.WriteLine("Строка 1");
Console.WriteLine();
Console.WriteLine("Строка 3");
выведет на экран три строки, одна из которых пустая:
Строка 1
Строка 3
Здравствуй, Иосиф!
А теперь пришло время поздороваться со мной.
Напишите программу, выводящую следующий текст:
Здравствуй,
Иосиф!
Заметьте, что выводятся две строки.
Примечание:
1. Обратите внимание, что каждая последующая команда Console.WriteLine() выводит указанный текст, начиная с новой строки.
2. Для решения задачи обязательно нужно выбрать язык программирования. Я показываю все на C#. Если нет окна с перечнем языков программирования, то перезагрузите страницу/программу.
3. Комментарий, который автоматически пишется при выборе языка C#, можно убрать ради чистоты кода:
4. Язык C# регистрозависимый. Нужно писать команды точно такие, какие были в лекции.
5. Не забудьте в конце каждой строки поставить точку с запятой (;).
Проверяющая система будет сравнивать результат вашей программы и правильный ответ посимвольно. Пробел – тоже символ. Это означает, что выводить нужно ровно такую строку, которая указано в условии задачи.
Самые частые ошибки компиляции: забыли поставить запятую, пробел, восклицательный знак или неправильно написали регистр букв. Вам нужно вывести текст точно такой как в описании задачи.
Совет: лучше всего его скопировать.