Программирование с нуля
Данная статья описывает основные конструкции в программировании и предназначена для тех, кто хочет в этом разобраться. Но статья не описывает все нюансы, потому что их слишком много. Если описывать их все, будет очень нудно и непонятно.
Использовать будем си-подобный синтаксис, то есть подобный языку си, но не будем вникать в заголовочные файлы, указатели и другие особенности относительно низкоуровневых языков, перейдём на синтаксис более высокоуровневых языков, которые сделают рутинную работу за нас. А конкретно, будем использовать синтаксис языка Java. Добро пожаловать под кат.
Двоичная система счисления
Числа в двоичной системе счисления состоят всего из двух знаков. Нуля и единицы. 00000001 – число один. 00000010 – число два. 00000100 – число 4. Как вы можете заметить, когда единица смещается влево, число увеличивается в два раза. Чтобы получилось число 3, необходимо написать 00000011. Таким образом можно составить все необходимые числа. В данном примере мы использовали двоичное число с восемью знаками, иначе говоря число восьмиразрядное. Чем больше у числа разрядов, тем большее оно может вместить значение. Например, восьмиразрядное число вмещает максимальное значение 255, если считать ноль, тогда 256, а в программировании ноль считается всегда. Если увеличить разряд на один, получится девятиразрядное число и его вместимость увеличится в два раза, то есть станет 512. Но так в программировании никогда не делается и обычно каждая следующая разрядность увеличивается вдвое. Один разряд, потом 2 разряда, потом 4 разряда, потом 8 разрядов, потом 16 разрядов, потом 32 разряда и далее.
Шестнадцатеричная система счисления
Всё аналогично двоичной, только вместо нулей и единиц участвуют цифры от 0 до 15. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, где A – 10, B – 11, C – 12, D – 13, E – 14, F – 15.
Знак минус в программировании
Знак минус в двоичной системе счисления обозначается единицей в самом старшем разряде. Конечно же если число может быть минусовым (да, да, в программировании типы цифр бывают неминусовыми и включающим числа со знаком минус). 10000000 – число -1. Это не число -0, потому что минус нулей не бывает, то есть отрицательные числа смещаются влево на один. А вообще, в разных языках программирования может быть разное представление отрицательных чисел, но вам это знание вряд ли пригодится, поэтому пока что думайте, что всё так, как я объяснил.
Буквы и знаки
Буквы, знаки, смайлики и так далее обозначаются также числами. Буква А может быть числом 00000001 или любым другим, или даже комбинацией чисел в зависимости от кодировки символов. Кодировок много.
Типы данных
В программировании есть типы данных. Числовые, такие как 233, которые разобрали выше. Называются почти везде int, от слова integer. С плавающей запятой, такие как 198,76, называются почти везде float. У букв тип char, у строк тип String. Тип bool имеет два значения – истина (true) и ложь (false). У этого типа реализация в разных языках разная, но самая простая, когда ноль — значит ложь, а любое другое число истину. Нестандартные типы данных, такие как числа с фиксированной запятой, рассматривать не будем.
Применение
Прежде чем использовать числа в программировании их нужно объявить, то есть сказать с помощью языка программирования, что они существуют.
int value;
Это стандартное объявление примитивного типа.
Сначала пишем тип, потом имя переменной, то есть нашего числа. Всегда заканчиваем наше выражение, да и любое, точкой с запятой.
Теперь мы можем использовать переменную по её имени.
value = 112;
Здесь мы присвоили переменной значение. В отличии от математики в программировании = значит взять значение справа и присвоить переменной слева. = — это знак/оператор присвоения.
Можно объединить объявление и присвоение, то есть сразу инициализировать переменную.
int value0 = 113; char a = ‘a’; String line = “line”;
Буквы выделяются одинарными кавычками, строки выделяются двойными кавычками. Числа типа int не выделяются.
float b = 3.14f;
К числам с плавающей запятой одинарной точности в конце добавляется f.
double c = 1.2;
К числам с плавающей запятой двойной точности ничего не добавляется.
Операторы
С помощью операторов можно складывать, вычитать и делать много других операций с переменными. Операторами являются +, -, *, / и другие. Да даже; является оператором, говорящим, что выражение завершено.
После того как мы записали наше выражение, например сложения,
int a = 127; int b = -12; a + b;
получается значение. Но так как оно ни одной переменной не присваивается, оно исчезает. Чтобы присвоить значение переменной используется специальный оператор присвоения, который коротко описан выше.
Повторим ещё раз. Он берёт значение со своей правой стороны и присваивает его переменной в левой стороне. Это оператор =, и он не имеет ничего общего со знаком равно из математики.
int c = 12; int d = 14; int e = c + d;
Они сравнивают значения или выражения слева и справа, а после выдают истинность в виде типа bool, то есть true или false, и это значение также можно присвоить.
int f = 1; int g = 4; bool isTrue = g > f;
Оператор && (и) сравнивает два значения типа bool. Если слева true и справа true, тогда этот оператор возвращает значение true. В других случаях false.
Оператор || (или) возвращает истинность, если хоть одно значение истинно (true).
Комментарии
Комментарии нужны для того, чтобы не забыть, что мы напрограммировали или они информируют тех, кто будет пользоваться нашим кодом. Попросту заметки в коде.
Однострочные комментарии открываются знаками // и заканчиваются в конце строки.
//Комментарий. int maxCount;
Вторая строка уже не комментарий.
Есть также многострочные комментарии и другие, которые я рассматривать не буду.
Операторы ветвления
Оператор ветвления if
Если переменная a меньше 154, то есть выражение истинно, выполняет код в фигурных скобках, потом программа выполняется дальше. Код в фигурных скобках называется блоком кода. Он нужен для того, чтобы сказать программе, что этот код принадлежит оператору и именно его нужно выполнить.
Оператор ветвления if можно расширить.
if(isTrue && isFalse) < b = b – 1; >else
Если условие оператора истинно, выполняет первый блок кода, а если нет, тогда второй блок кода после else.
Оператор ветвления switch
switch(value)
Этот оператор сравнивает значение в круглых скобках со значениями после case. Если значения совпадают, выполняет выражение или выражения после case, доходит до оператора break, после выходит из цикла и продолжает программу дальше. Если ни одно значение не совпадает, выполняет выражение после default. default можно и не писать.
switch(value)
Циклы
Цикл for
Циклы выполняют блок кода по кругу, пока определённое действие их не остановит.
for(int i = 32; i >=0; i = i – 1)
За круглыми скобками в порядке очереди идут инициализация переменной, которая будет счётчиком, условие, при котором цикл выполняется вновь и вновь при истинности условия, выражение, которое выполняется после того, как выполнится блок кода цикла. То есть этот цикл будет выполняться снова и снова, пока переменная i больше либо равна нулю, и, начиная со второго выполнения цикла, значение переменной i будет уменьшаться на единицу. После того, как условие станет ложным, программа начнёт выполняться дальше.
Цикл while
while(i > 3)
Цикл while выполняется до тех пор, пока условие в круглых скобках истинно.
Если условие будет ложным, но нам необходимо чтобы цикл выполнился один раз, тогда используем следующую конструкцию
do < i = i – 2; >while(false);
Область видимости
int a = 4;
Также фигурными скобками определяется область видимости. Все переменные, объявленные внутри фигурных скобок, невидимы во внешней области, но внешняя область видна внутри фигурных скобок. Поэтому мы можем использовать внутри фигурных скобок внешние переменные, но не можем во внешней области использовать переменные, объявленные внутри внутренней области.
Ключевые слова
В языках программирования есть наборы ключевых слов, в каждом языке свой набор. Этими словами ничего называть нельзя. Ни переменные, ни методы/функции, ничего подобного. Слово while ключевое и другие подобные слова также ключевые.
Массивы
Массивы – это набор значений одного типа. Они удобны, когда нам нужно что-то перечислить.
int[] items = new int[7];
Так выглядит обычное объявление массива. Сначала указываем нужный тип. Потом ставим квадратные скобки, этим говорим языку программирования, что объявляем массив. Далее вписываем его имя. После знака присвоения вписываем выражение инициализации, то есть создания массива. Там мы видим новый оператор new, который используется при создании массива. Если сказать проще, мы создаём семь переменных типа int и присваиваем их нашему массиву под именем items.
Мы создали массив с семью элементами, но обращаться к первому начинаем с 0. Поэтому последний элемент будет под индексом 6. Не забывайте об этом смещении.
Обращение к элементу массива и присвоение его переменной выглядит так
int a = items[0];
Вход в программу
Мы рассмотрели все основные моменты, чтобы хоть что-то понимать, поэтому теперь перейдём к написанию простой программы.
Началом программы является метод main. Любой метод подобен блоку кода, но с именем. Его можно вызвать из другой части программы по имени, но метод main нельзя, потому что он вход в программу, а вход должен быть один. Метод main срабатывает только при запуске.
int addAndMultiplyByTwo(int a, int b)
А это простейший метод, который сейчас разберём. В круглых скобках указываются входные параметры. Можете их представить, как уже объявленные переменные в блоке кода, которым мы можем присвоить значения извне. Внутри фигурных скобок первый оператор, который мы видим, это return. Он берёт значение справа, которое получается из выражения, и передаёт его вовне. Тип передаваемого вовне значения должен быть таким же, как указанный перед именем метода, то есть int.
int g = 6; int z = addAndMultiplyByTwo(7, g);
Так метод вызывается и результат его выполнения передаётся в переменную z.
class HelloWorld < public static void main(String args []) < System.out.println("Hello World"); >>
В этом примере сначала создаётся класс HelloWorld. Пока что думайте, что класс – это файл, в который мы записываем текст программы.
Далее идёт объявление метода main. По словам слева от его имени мы можем понять, что метод публичный (слово public), то есть мы можем вызвать его не только из этого класса, но и извне. По слову static мы можем понять, что метод статичный, то есть можно его вызвать без разных манипуляций, которые мы рассмотрим позже. Слово void говорит, что метод ничего не возвращает. В круглых скобках есть аргумент args[]. Этот аргумент является пустым массивом строк. Можно добавить забитый чем-то массив строк, но нам это не нужно, потому что использовать его мы не будем, а программа запустится и так.
Следующим мы видим вызов метода println, в параметр которого помещена строка Hello World. Перед ним мы видим перечисление через точки System.out. Если кратко, слово System означает, что метод println находится в классе System, а слово out – это выходной поток PrintStream, который нужен, чтобы выдать информацию вовне. В этом примере вовне — это консоль. Выходной поток out мы рассматривать не будем. Разбор потоков может вылиться в отдельную статью. Нам важно только знать, что out (объект класса PrintStream) находится в классе System, а метод println находится в объекте out. Все эти перечисления через точку просто указывают путь языку программированию к методу println, чтобы он знал откуда его вызывать.
Этот метод выводит строку Hello World в консоль и переводит курсор на новую строку. На этом программа заканчивается.
Компиляция и выполнение
Синтаксис простой программы мы рассмотрели, но не запустили её. Этим мы сейчас и займёмся.
Для начала скачайте JDK и установите его. Потом в переменных средах вашей операционной системы пропишите в переменной Path путь к папке bin вашего установленного JDK. Это нужно, чтобы операционная система могла найти из консоли программы JDK для компиляции и запуска. Теперь поместите текст программы в текстовый файл с именем HelloWorld. С именем HelloWorld, потому что имя файла и класса должны совпадать. Сохраните и измените расширение файла на java. Перейдите в консоли в папку с файлом и введите javac HelloWorld.java. Программа скомпилируется и поместится в файл HelloWorld.class. Чтобы запустить её напишите java HelloWorld. В выводе вы увидите Hello World. Что мы и хотели.
Импорт
Чтобы использовать другие классы и методы из стандартной библиотеки используем слово import.
import java.util.Random;
После слова import идёт название пакета java.util. Он назван так из-за назначения и, собственно, из-за папок java и util, в которых находится класс Random. Путь java\util\Random.class
Вместо java.util.Random можно вписать любой необходимый нам класс.
Классы и объекты. Статические и динамические реализации
Создадим два класса. Эти классы должны находиться в одной папке, чтобы после компиляции они смогли найти друг друга.
Есть ещё множество способов, чтобы классы могли найти друг друга. Это пакеты, внешние библиотеки, внутрипакетное взаимодействие и другое. Здесь разбирать это не будем. Просто знайте, что есть специальные конструкции и ключевые слова, чтобы использовать эти механизмы.
class MyClass < public static void main(String [] args)< AnotherClass object0 = new AnotherClass(); System.out.println(object0.a); System.out.println(object0.addition(8, 10)); >>
public class AnotherClass < int a = 9; int addition(int b, int c)< return b + c; >>
Разберём их. Начнём с класса AnotherClass. Перед его именем мы видим слово public, которое говорит, что класс публичный и его могут использовать другие классы. В нём мы создаём переменную a со значением 9 и метод addition. Можно сказать, что класс AnotherClass – это новый тип.
В классе MyClass мы создаём объект object0 класса AnotherClass. Это очень похоже на создание обычной переменной и также используется ключевое слово new, как при создании массива. Оператор new говорит языку программирования, что нужно создать копию этого класса в оперативной памяти. Мы можем создать множество копий и забить ими всю память. Далее мы передаём переменную a этого объекта в метод println. Dызываем динамические метод addition в параметре метода println. Метод addition вернёт результат, а метод println выведет его.
Динамический метод отличается от статического тем, что его можно вызвать только из объекта, загруженного в память. То есть для начала нужно создать объект. Статический метод можно вызывать напрямую из класса, то есть просто написав имя класса, поставить точку и через неё вызвать метод. Но у статических методов есть ограничения. Внутри их тела невозможно обращаться к динамическим переменным объекта класса, в котором находятся эти методы. Так как статический метод не загружается в оперативную память, в нём нельзя использовать переменные объекта, загруженные в неё.
Чтобы создать статический метод, перед его именем нужно написать static.
Конструкторы
class MyClass2 < public static void main(String [] args)< AnotherClass2 object0 = new AnotherClass2(); AnotherClass2 object1 = new AnotherClass2(6); System.out.println(object0.a); System.out.println(object0.a); >>
public class AnotherClass2 < public AnotherClass2()< a = 7; >public AnotherClass2(int x) < a = x; >int a; >
В этих классах почти всё идентично предыдущим, но создаётся два объекта класса AnotherClass2. object0 и object1. Но создаются они по-разному.
Разберём класс AnotherClass2. В нём появился новый механизм, который называется конструктор. Конструкторов в классе может быть несколько, начинаются они со слова public, а далее идёт имя класса. В круглых скобках перечисляются параметры, а в теле конструктора описывается инициализация объекта класса. Конструкторы схожи с методами.
Перейдём к разбору конструкторов в классе MyClass2. В этом классе при создании объектов класса AnotherClass2 мы можем указать параметры в круглых скобках. Язык программирования выберет подходящий под параметры конструктор и проинициализирует объект подходящим образом. Так при создании объектов мы можем создать его разновидность нужную нам.
post scriptum
Основы разобраны все. Но всё же я не разобрал наследование и многое другое. Оставляю всё это вам. Привыкайте, потому что, если вы вступите на путь программирования, вам не избежать постоянного самообучения и рытья в бесконечных документациях и спецификациях.
- Программирование
- с нуля
- для новичков
Самоучитель для начинающих программистов
Программирование — это навык, который может открыть множество дверей в мире современных технологий. Но как начать изучать программирование, если вы никогда этим не занимались раньше? В этой статье мы расскажем, как научиться программировать с нуля, представляя подробный план действий для начинающих, а также описывая основные концепции и терминологию.
Шаг 1: Выберите язык программирования
Первый шаг — выбрать язык программирования, который вы хотите изучать. Существует множество языков программирования, каждый из которых имеет свои преимущества и недостатки. Однако, если вы начинаете с нуля, рекомендуется выбрать язык, который легко изучить и имеет большое сообщество разработчиков, такой как Python или JavaScript.
Шаг 2: Изучите основы
Когда вы выбрали язык программирования, следующий шаг — изучить основы. Начните с изучения базовых концепций, таких как переменные, типы данных, операторы и условные операторы. Эти концепции являются основой любого языка программирования, поэтому очень важно понимать их.
Шаг 3: Напишите свою первую программу
Когда вы изучили основы, напишите свою первую программу. Это может быть простой скрипт, который выводит текст на экран или решает математическую задачу. Не бойтесь делать ошибки — это нормально в процессе изучения.
Шаг 4: Практикуйтесь
Чтобы стать лучшим программистом, нужно практиковаться. Решайте задачи и проекты, которые помогут вам применять свои знания на практике. Попробуйте реализовать какой-нибудь проект, который вам интересен. Например, создайте веб-приложение или игру.
Шаг 5: Общайтесь с сообществом
Чтобы получить больше информации и научиться лучше, не забывайте общаться с сообществом программистов. Участвуйте в дискуссиях, задавайте вопросы и обменивайтесь опытом. Также существуют множество онлайн-курсов и ресурсов, которые могут помочь вам на пути к изучению программирования.
Основная терминология в программировании:
При изучении программирования вы столкнетесь с множеством терминов, которые являются ключевыми для понимания основных концепций. Вот некоторые из них:
- Код (code) — это набор инструкций, который компьютер может выполнить. Код может быть написан на разных языках программирования, таких как Python, Java, C++, JavaScript и других.
- Компилятор (compiler) — это программа, которая преобразует исходный код на одном языке программирования в машинный код, который может быть понят компьютером.
- Интерпретатор (interpreter) — это программа, которая читает исходный код на одном языке программирования и выполняет его построчно.
- Переменная (variable) — это область памяти, которая хранит значение, которое может изменяться в ходе выполнения программы. Переменные могут иметь разные типы данных, такие как целые числа (int), строки (string), дробные числа (float) и другие.
- Функция (function) — это блок кода, который может быть вызван из другого места программы. Функции могут принимать параметры и возвращать значения.
- Алгоритм (algorithm) — это последовательность инструкций, которые описывают решение задачи.
- Условие (condition) — это конструкция, которая выполняет разные действия в зависимости от того, выполняется ли заданное условие.
- Цикл (loop) — это конструкция, которая позволяет выполнять блок кода несколько раз.
- Массив (array) — это структура данных, которая содержит набор элементов определенного типа. Каждый элемент в массиве имеет свой индекс, который позволяет обращаться к нему.
- Объект (object) — это экземпляр класса, который содержит свойства и методы. Объекты используются в объектно-ориентированном программировании.
Это только небольшой список терминов, которые могут встретиться в программировании. По мере продвижения в изучении языка программирования вы будете сталкиваться с новыми терминами и концепциями. Однако, понимание основной терминологии поможет вам лучше понимать процесс написания кода и работу с компьютером.
Основные концепции:
Основная концепция программирования заключается в написании кода, который описывает последовательность инструкций, которые должен выполнить компьютер для решения задачи или достижения определенной цели.
Программирование включает в себя ряд базовых концепций, которые являются ключевыми для написания эффективного кода. Некоторые из этих концепций включают в себя:
- Переменные и типы данных — переменные используются для хранения значений, которые могут быть изменены в ходе выполнения программы. Важно понимать различные типы данных, такие как числа, строки и булевы значения.
- Условные конструкции — условные конструкции используются для выполнения различных действий, в зависимости от значения переменной или другого условия.
- Циклы — циклы используются для повторного выполнения блока кода определенное количество раз или до тех пор, пока не будет выполнено определенное условие.
- Функции и методы — функции и методы используются для повторного использования блоков кода и их организации в отдельные модули.
- Объектно-ориентированное программирование — объектно-ориентированное программирование (ООП) использует классы и объекты для описания объектов и их свойств, а также методов, которые могут быть вызваны на этих объектах.
- Алгоритмы и структуры данных — алгоритмы и структуры данных используются для эффективной организации и обработки данных.
Важно понимать, что программирование не сводится только к написанию кода. Это также включает в себя понимание проблемы, которую необходимо решить, анализ требований, проектирование и тестирование программного обеспечения. Кроме того, программирование включает в себя постоянное обучение и улучшение навыков для эффективного решения сложных задач.
В заключение, изучение программирования — это процесс, который требует времени, терпения и упорства. Не бойтесь делать ошибки, потому что это часть процесса обучения. Помните, что самый лучший способ научиться программированию — это практика. Не зацикливайтесь на теории и изучении языка программирования, а сконцентрируйтесь на том, как вы можете использовать его для создания чего-то нового и полезного.
Кроме того, стоит отметить, что в программировании очень важно уметь решать проблемы и находить ошибки. Часто, чтобы найти ошибку в коде, нужно быть терпеливым и уметь думать логически. Поэтому, помимо изучения конкретных языков программирования, также полезно развивать логическое мышление и умение решать задачи.
В итоге, изучение программирования может открыть для вас множество возможностей и стать основой для будущей карьеры в сфере технологий. Начните с простых шагов, следуйте плану и не бойтесь экспериментировать. Удачи в изучении программирования!
Большое количество книг по всем языкам программирования ты можешь найти в канале — Библиотека
Подписывайся и развивайся!
С чего начать изучение программирования с нуля самостоятельно
С чего начать изучение программирования? Роль технологий за последние 20 лет сильно изменилась. Компьютеры и технологии проникли почти во все сферы нашей жизни: что мы покупаем, как мы добираемся с места на место, как мы работаем или где мы едим после окончания рабочего дня — мы решаем с помощью технологий.
По этой и многим другим причинам программирование является одним из самых ценных навыков, которые можно приобрести в 21 веке. Хотите ли продвинуться по карьерной лестнице, создавать программное обеспечение, игры или разбираться в мире технологий, изучение программирования может стать важным подспорьем в профессиональном и личном развитии.
Однако изучение программирования может быть очень пугающим. Еще до написания своей первой программы я думал, что программисты — это элитная группа специалистов, обладающих талантом, превосходящим все, чем я могу обладать. Из разговоров, которые я вел с начинающими программистами, можно сделать вывод, что это распространенное мнение: программирование — это занятие, предназначенное только для самых выдающихся технарей.
Я хочу сразу же пояснить, что это не так. При наличии времени, усердия и доступа в интернету любой человек может стать программистом с нуля.
В зависимости от того, что вы хотите изучить и насколько глубоко вникнуть, можно потратить на обучение от нескольких месяцев до конца жизни, но все начинают с основ. Именно поэтому в этом руководстве расскажe обо всем, что нужно знать, чтобы начать писать код, включая:
- Почему стоит научиться программировать;
- С какого языка начать;
- Как начать писать код;
- Несколько ценных советов для тех, кто только начинает.

Зачем учиться программировать?
Прежде чем приступить к первому уроку, сначала подумайте, почему хотите научиться программировать. Это поможет определить, какой язык изучать в первую очередь и над какими проектами работать. Вот некоторые преимущества обучения программированию:
Приобретение профессиональных навыков
Давайте разберемся с самым очевидным: умение программировать — это преимуществом при трудоустройстве. Поскольку технологии продолжают вплетаться в нашу повседневную жизнь, навыки разработки будут становиться все более востребованными среди кандидатов — по данным сайта Indeed.com, несколько наиболее востребованных навыков относятся к области вычислительной техники.
Чтобы сделать карьерный поворот в сторону IT или перейти на более техническую должность в своей области, знание хотя бы одного соответствующего языка программирования обязательно. Однако это относится не только к разработчикам. Веб-дизайнеры должны знать HTML, CSS и JavaScript. Менеджеры проектов должны знать внутреннее устройство инструментов, которые они помогают создавать. Даже если у вас простой сайт на WordPress, знакомство с языками front-end и немного с PHP поможет в работе с ним.
Если не претендуете на сугубо техническую должность, опыт программирования все равно является хорошим преимуществом — он демонстрирует технические знания и способность понимать абстрактные концепции и решать сложные проблемы.
Наконец, умение программировать позволит заняться фрилансом и развить карьеру фрилансера. На этом пути у вас будет гораздо больше возможностей контролировать карьеру и проекты, за которые вы беретесь.
Возможность создавать продукты
Одно из самых замечательных преимуществ изучения программирования — это возможность воплощать свои идеи в жизнь. У вас есть концепция веб-сайта, приложения или компьютерной игры? Теперь можно создать его именно так, как вам хочется, а затем поделиться им со всем миром.
Хотите ли вы монетизировать свой проект, разместить его на платформе с открытым исходным кодом, такой как GitHub, или просто создавать что-то в качестве хобби, у вас будут знания и инструменты для этого. Кроме того, как мы скоро увидим, собственные проекты играют важную роль в процессе обучения и поиска работы.
Понимание окружающего мира
Технологии распространяются и развиваются с каждым годом. Изучение даже основ компьютерного программирования поможет понять компоненты растущего цифрового ландшафта, включая ту вещь, которой вы, вероятно, пользуетесь каждый день, под названием интернет. Вы получите совершенно новый взгляд на технологии в жизни и понимание того, как все это объединяется.
Это весело
Для многих изучение кодинга является полезным и приятным опытом. После освоения основ и начала работы над собственными оригинальными проектами, этот процесс будет меньше походить на обучение и больше на отдых. В конце концов, если вы не получаете от этого удовольствия, то зачем заниматься?
Какие языки программирования изучать?
Программирование требует знания хотя бы одного языка программирования — набора синтаксиса и правил, понятных компьютерам. Существуют сотни языков программирования, каждый из которых уникален по своему назначению и возможностям. Но некоторые языки легче выучить, чем другие — с них лучше всего начинать, поскольку это самый быстрый способ изучить основы программирования.
Ниже перечислены некоторые языки, которые считаются подходящими для начинающих программистов. Я рекомендую освоить только один язык, который соответствует вашим целям, а затем изучить другие, если у вас есть желание. Не бойтесь выбрать неправильный язык. Эти языки имеют общие концепции, поэтому вы можете начать с одного и перейти на другой, если это необходимо.
HTML И CSS
Язык гипертекстовой разметки, или HTML, является основой интернета — он используется для создания содержимого веб-страниц. Когда вы загружаете веб-страницу, обычно вы видите HTML-документ, отображаемый браузером.
Если вы не уверены, что программирование — это ваш конек, HTML — самый простой язык для изучения. Это связано с тем, что HTML технически не является языком программирования — он не выполняет сценарии, и на нем нельзя создавать функциональные программы. Тем не менее, HTML присутствует в интернете повсюду, поэтому если вы хотите понять интернет, вам сначала нужно понять HTML.
Возможно, вы менее знакомы с CSS. HTML определяет, какое содержимое появляется на веб-странице, но не влияет на то, как это содержимое появляется. Именно здесь на помощь приходят каскадные таблицы стилей (Cascading Style Sheets, или CSS). Язык CSS обрабатывает стиль HTML — он задает такие характеристики, как цвета, размер, шрифты и даже макет всей страницы.
Вам интересны интернет-маркетинг и продвижение бизнеса в интернете? Подписывайтесь на наш Telegram-канал!
CSS также не является языком программирования. Это набор правил, применяемых к HTML. HTML и CSS почти всегда используются вместе, поэтому я рекомендую изучить оба. В противном случае веб-страницы будут выглядеть слишком примитивно.
HTML и CSS легко изучать в основном потому, что они не требуют вычислительной логики языков программирования. Изучение HTML и CSS также может показаться менее абстрактным, чем других языков, поскольку вы быстро видите результаты своего кода — просто создайте файл .html и откройте его в браузере. Или откройте существующий веб-сайт и используйте инструмент разработчика в браузере, чтобы заглянуть в исходный код. Это позволяет изучить два языка, которыми вы пользуетесь каждый день, за один день.
Но если вы хотите, чтобы ваши веб-страницы выполняли определенные действия, вам понадобится…
JavaScript
JavaScript — это язык программирования, который превращает статические веб-страницы в динамические. Он позволяет элементам страницы перемещаться, реагировать на действия пользователя, например, на нажатия, и выполнять любые операции, выходящие за рамки простого существования на странице.
Если интересуетесь веб-разработкой и уже знакомы с HTML и CSS, то JavaScript — это следующий уровень развития. Вместе эти три языка составляют большую часть веб-контента, который вы видите. Кроме того, код на JavaScript можно легко протестировать в браузере.
Python
Python — очень популярный язык программирования для начинающих благодаря своему удобному синтаксису и универсальности. Большая часть кода Python читается как английский, что помогает новичкам (кто понимает английский, разумеется) быстрее усвоить такие фундаментальные понятия, как функции.
В Python также есть множество библиотек кода — групп готовых функций, которые вы можете подключить к своему коду вместо того, чтобы писать их самостоятельно. С помощью Python можно создавать множество различных программ, и многие курсы программирования для начинающих основаны на изучении этого языка.
C/C++
Язык Си — еще один популярный выбор для начала обучению программированию. Он более сложен, чем Python, и часто требует от начинающих писать больше кода для достижения тех же целей. Это больше работы, но полезно для понимания абстрактных концепций. Изучая C, вы приобретете навыки, которые можно будет легко применить к другим, более лаконичным языкам.
C++ является преемником C. Синтаксис C++ похож на C с добавлением объектов — мощного типа переменных, который облегчает программирование сложных приложений. Я рекомендую начинать с языка C, так как в нем меньше концепций, и каждая из них есть в C++.
Java
Java (не путать с JavaScript) — это объектно-ориентированный язык программирования общего назначения. Как и Python, синтаксис Java легко читается и понимается программистами-людьми — зачастую сложные задачи могут быть решены одной командой.
Java широко используется в мобильных приложениях для Android и является еще одним отличным базовым языком, принципы которого можно интуитивно применять при изучении других языков.
Как начать программировать с нуля
- Пройдите онлайн-курс
- Смотрите видеоуроки
- Читайте книги / электронные книги
- Выполняйте проекты по разработке
- Найдите наставника и сообщество
- Подумайте о том, чтобы записаться в буткемп по программированию
Благодаря интернету еще никогда не было лучшего времени для того, чтобы научиться программировать. К сожалению, огромное количество вариантов обучения может поставить некоторых начинающих кодеров в тупик еще до того, как они начнут. В этом разделе мы расскажем о некоторых лучших способах начать обучение программированию, а также о рекомендуемых ресурсах в каждой категории.
1. Пройдите онлайн-курс
Чтобы научиться программировать, больше не обязательно поступать в университет. Сегодня существуют тысячи онлайн-курсов по программированию, которые охватывают все — от основ HTML до структур данных и сложных алгоритмов.
Ваш первый курс должен знакомить с основами языка и содержать интерактивные модули и задания, чтобы направлять ваше обучение в нужный вектор. Курсы обеспечивают структуру обучения, что очень важно, поскольку концепции в информатике выстраиваются друг на друге. Организованный курс позволяет легко усвоить материал и гарантирует, что вы будете изучать предметы в правильном порядке.
Популярные ресурсы с бесплатными курсами включают freeCodeCamp, W3Schools и известный гарвардский курс “Введение в компьютерную науку”, доступный на edX и YouTube-канале CS50. Эти варианты отлично подходят для того, чтобы на раннем этапе определить, готовы ли вы потратить время на изучение конкретного языка.
Кроме того, существует множество платных курсов, доступных по цене, составляющей лишь малую часть стоимости очных занятий. Яндекс Практикум, Skillbox и Geekbrains охватывают широкий спектр тем по компьютерной науке для начинающих, среднего и продвинутого уровня. Некоторые платные сервисы даже предлагают несколько бесплатных курсов или пробных занятий, если вы хотите получить представление об их подходе к обучению до оплаты.
2. Смотрите видеоуроки
Вы наверняка смотрели видеоуроки на YouTube — почему бы не сделать то же самое на тему программирования?
Хотя онлайн-курсы — это лучший вариант для получения практического опыта, бесплатные онлайн-видео могут дополнить обучение и удовлетворить любопытство. Моими личными фаворитами являются “Краткий курс информатики” и “Основы” Тома Скотта, которые охватывают более широкие темы в информатике.
Я также рекомендую вышеупомянутый гарвардский курс CS50, а на YouTube нет недостатка в других лекциях по информатике.
Подпишитесь на авторский телеграм-канал про предпринимательство в России.
3. Читайте книги и электронные книги
Предпочитаете старый добрый подход? Возьмите книгу по выбранному языку для начинающих. Книги познакомят вас с фундаментальными концепциями и помогут в написании кода. Вот некоторые авторитетные книги по каждому рекомендуемому языку для начинающих:
- HTML/CSS: Руководство для начинающих по HTML и CSS для маркетологов
- JavaScript: Eloquent JavaScript: Современное введение в программирование
- Python: Краткий курс Python
- C: Абсолютное руководство для начинающих программистов на языке C
- C++: C++ Primer
- Java: Эффективный Java
4. Практикуйтесь на реальных задачах
Программированию учатся на практике — без этого никак не обойтись. Можно прочитать обо всех концепциях и синтаксисе, необходимых для написания функционального кода. Но пока вы не примените полученные знания на практике, идеи не смогут полностью реализоваться в сознании. Вот тут-то и приходят на помощь проекты.
Проект — это любая программа (или веб-сайт), созданная на выбранном вами языке. В начале работы проекты должны быть краткосрочными. Если вы изучаете курс, вам могут быть заданы проекты, направленные на закрепление той или иной концепции. Существует также множество проектов для начинающих программистов, которые вы можете выполнить самостоятельно. Некоторые классические проекты включают:
- Конвертер времени, в котором пользователь задает количество секунд, а программа выдает эквивалент в часах, минутах, днях и т.д.
- Генератор случайных чисел, который производит случайное число между двумя значениями, указанными пользователем.
- Калькулятор, в котором пользователь указывает свои входные данные и математическую операцию, а программа выдает результат.
- Адресная книга, в которой пользователи могут вводить имена контактов, а затем искать их в вашей программе.
- Алфавитный указатель, в котором пользователь предоставляет список слов, а программа сортирует их в алфавитном порядке.
- Игра “Палач”, в которой пользователь пытается угадать скрытое слово, вводя буквы, а программа обеспечивает обратную связь для правильных или неправильных догадок. Если пользователь угадывает все буквы слова, он выигрывает.
Быстрый поиск в Google позволит найти еще больше мини-задач, требующих применения ваших навыков для решения реальных проблем.
Помимо отработки понятий, проекты обеспечивают еще два преимущества для эффективного обучения. Во-первых, они будут поддерживать мотивацию. Проекты помогают понять, зачем вы занимаетесь программированием, и устанавливают четкие, осязаемые ориентиры для вашего прогресса. Каждый завершенный проект означает еще один навык за плечами. Когда я учился, это очень воодушевляло.
Во-вторых, проекты по кодированию, особенно долгосрочные, дают возможность продемонстрировать свою работу. Одно дело — указать в резюме “Python”, другое — показать, что вы создали целый сайт или приложение с нуля. Проекты являются обязательным условием для программистов начального уровня, поскольку они доказывают компетентность в данном языке.
Приступая к долгосрочным проектам, подумайте о том, во что вы готовы вложить время. Будь то личный веб-сайт, мобильное приложение или программа для ПК, вы столкнетесь с беспрецедентным количеством препятствий на своем пути. Выбор проекта, который вам действительно нравится и о котором вы заботитесь, гарантирует, что вы доведете дело до конца.
Еще один отличный способ найти проекты — это фриланс. Вам не нужно быть опытным программистом, чтобы создать полезный инструмент для кого-то. Обратитесь к другу, члену семьи или местному предприятию, нуждающемуся в инструменте или веб-сайте, который вы можете сделать бесплатно — это беспроигрышный вариант.
5. Найдите наставника и сообщество
Наличие напарника, ментора или онлайн-сообщества для дальнейшего обучения может оказать неоценимую помощь в развитии.
Во-первых, рекомендую найти наставника. По мере обучения вы столкнетесь с проблемами, которые, как бы вы ни старались, вы просто не сможете решить. Вот здесь-то и могут помочь наставники. Наставник не обязательно должен быть настоящим учителем — им может быть любой человек, знающий выбранный язык программирования, который сможет объяснить вам сложные понятия и подсказать решение. Кроме того, опытный наставник может помочь вам следовать практике разработки, не описанной в учебниках, и дать советы по развитию карьеры в сфере технологий.
Помимо наставника, вам может быть интересно принять участие в жизни сообщества. Ищите онлайн-группы, сетевые мероприятия и встречи в вашем регионе, а также хакатоны, где вы сможете наладить связи с опытными программистами.
Онлайн-сообщества разработчиков также являются богатым ресурсом для начинающих. Обязательно загляните туда:
- Stack Overflow, форус для вопросов и обсуждения программирования.
- GitHub, хранилище кода для проектов с открытым исходным кодом с активным сообществом разработчиков.
- Women Who Code — некоммерческая организация, которая организует мероприятия, сообщества и размещает вакансии для женщин, делающих карьеру в сфере технологий.
- Сабреддит r/learnprogramming (т.е. микросайт на Reddit.com) для начинающих кодеров.
6. Рассмотрите возможность записаться в буткемп по программированию
Буткемп по кодингу — это краткосрочная программа обучения, которая включает в себя полный учебный план по программированию в течение нескольких месяцев. Эти программы рассчитаны на быстрое погружение и являются стартовой площадкой для карьеры разработчика.
Буткемпы по разработке интенсивны и дороги — это не то, во что стоит погружаться без опыта программирования. Эти программы рассчитаны на новичков, которые намерены строить карьеру в области разработки и готовы потратить время, энергию и деньги на быстрое приобретение необходимых навыков.
Хотя выпускники, как правило, находят работу в сфере IT, поймите, что это не гарантированный результат и что придется выделить приличный кусок своего времени и сбережений для такого обучения. Тем не менее, трудно превзойти условия очного обучения в окружении таких же целеустремленных сверстников и преподавателей, как и вы.
Советы для начинающих программистов
Очевидно, что к практике программирования можно подойти по-разному, и некоторые методы и языки подойдут вам лучше, чем другие. Однако независимо от того, что и как вы изучаете, запомните эти советы:
Будьте терпеливы
В начале этой заметки я сказал, что научиться программировать может каждый. Но это не значит, что это легко. Программирование требует, чтобы вы подходили к проблемам так, как раньше не подходили. Определенные темы могут показаться вам совершенно бессмысленными, но при этом они являются ключевыми для изучаемого языка. Задачи, которые поначалу могут показаться простыми, в итоге окажутся гораздо сложнее, чем вы ожидали — вы будете часами безрезультатно ломать голову над заданием.
Нельзя забывать и об отладке — вы быстро узнаете, что компьютеры очень придирчивы и будут делать только то, что вы им скажете. Крошечные опечатки, такие как пропущенная точка с запятой или неправильный оператор, сломают всю программу, и вам придется искать виновника.
Все это может быть неудобно и обескураживающе, и это нормально. Сделайте себе одолжение и продвигайтесь вперед медленно и неуклонно, давая себе время все усвоить. Даже лучшие программисты когда-то были там, где вы сейчас, и всем приходится изучать одни и те же вещи, чтобы начать. Будьте проще к себе, придерживайтесь поставленных целей, делайте перерывы, и все будет хорошо.
Овладейте необходимыми инструментами
Вы будете проводить много времени, уставившись в экран, поэтому обязательно выделите время для того, чтобы освоиться с инструментами для программирования.
Все языки для начинающих требуют наличия текстового редактора — программы, которую вы используете для написания кода. Текстовые редакторы включают в себя функции, облегчающие работу с кодом, такие как цветовое кодирование, автозаполнение, поиск и замена и темный режим. Notepad++, Sublime Text и Emacs — популярные текстовые редакторы для начинающих.
Вы также должны научиться работать с консолью — текстовым интерфейсом операционной системы. Консоль позволяет находить файлы и выполнять команды на них быстрее, чем стандартный графический интерфейс пользователя (GUI). Ознакомьтесь с тем, как ее использовать, включая основные команды UNIX, поскольку вы будете делать то, что невозможно в графическом интерфейсе.
Изучите основы
Как и в любой другой теме, на начальном этапе изучения языка программирования главное — это основы. Вы можете начать с изучения двоичного кода, типов данных и печати на консоли. Затем вы изучите такие темы, как переменные, функции, условная логика, массивы и объекты.
Очень важно, чтобы вы полностью усвоили все эти понятия, прежде чем двигаться дальше, поскольку все, что вы изучаете в IT, основывается на предыдущих темах. Если что-то не понятно, повторяйте это до тех пор, пока не станет понятно — не думайте, что это будет понятно в контексте будущих уроков.
Если вы учитесь по учебнику, убедитесь, что вы понимаете, чему должно научить каждое упражнение. Выполните все упражнения, чтобы на собственном опыте понять, как каждая тема применима к программированию. И, как уже говорилось, наберитесь терпения — вы не сможете приступить к амбициозному проекту, пока не освоите основы.
Пишите чистый код с самого начала
Помимо того, что вы научитесь писать код, вы также должны уметь писать его хорошо.
Что это значит? Для любого конкретного вычисления существует более одного способа его программирования. Вы всегда должны стремиться написать его наиболее кратким и читабельным способом. Разработчики обычно работают в командах, поэтому другие будут часто читать ваш код. Если его трудно расшифровать, коллеги-разработчики не захотят с вами работать.
Даже если вы решите работать фрилансером, написание чистого кода гарантирует, что вы будете понимать свой собственный код. Лучше выработать привычку к чистому коду сейчас, так как это избавит от необходимости часами пытаться расшифровать свою работу после того, как вы не заглядывали в нее несколько месяцев.
Возможно, вы задаетесь вопросом, почему чистый код так важно изучать на данном этапе. Вы новичок, так разве написание функциональных программ не должно быть главной целью? Ну, да. Однако речь идет о раннем формировании хороших привычек. Если вы приложите дополнительные усилия сейчас, вы сэкономите себе (и другим) немного здравомыслия в будущем.
Хорошим способом достижения этой цели является сокращение строк и функций. Я рекомендую ограничивать каждую строку кода максимум 80 символами, а каждую функцию — не более чем 15 строками. Хотя поначалу эти правила будут ограничены, они приучат вас отдавать предпочтение эффективному коду, а не первой пришедшей в голову идее.
Кроме того, приучите себя к комментированию. Комментарии — это сегменты кода, которые не обрабатываются компьютером, поэтому в них можно писать все, что угодно — программисты используют комментарии, чтобы прояснить цель своего кода. Изучите, как работают комментарии в вашем языке, и, по крайней мере, оставляйте комментарии в верхней части функций, объясняя назначение каждой из них.
Google – друг программиста
Нет ничего постыдного в том, чтобы искать решения проблем в Google. На самом деле, профессиональные разработчики делают это постоянно. Если вы испытываете трудности, кто-то, вероятно, был в такой же ситуации и задал вопрос на форуме. Вы удивитесь, насколько специфичными могут быть запросы, но при этом решение все равно будет найдено.
Кроме того, очень приятно закрыть 20 вкладок Stack Exchange после того, как наконец-то исправили упрямый баг.
Программирование — это больше, чем просто код
В заключение я хочу поделиться еще одним ценным советом из моего первого курса информатики.
С точки зрения новичка может показаться, что научиться кодировать — значит научиться буквально писать код. В этом есть смысл: когда мы представляем себе программиста, мы видим человека, пишущего код на компьютере.
Однако как только начнете работать, вы поймете, что это не вся история. В действительности вы потратите гораздо больше времени на обдумывание того, что написать, прежде чем это будет сделано. Это потому, что программирование — это больше решение проблем, чем знание синтаксиса. Учиться программировать — значит учиться думать, как это делают компьютеры, разлагать проблемы на составляющие и решать их с помощью предоставленных вам инструментов.
Поэтому, да, вы научитесь программировать и создавать удивительные вещи. Но сначала вы разовьете навыки мышления, которые помогут вам в этом. За годы работы над кодом этот новый подход к решению проблем изменил не только то, как я решаю технические задачи, но и то, как я подхожу к решению проблем в целом. Я надеюсь, что вы испытаете то же самое.
Желаем вам удачи в обучении программированию!
Первый опыт написания полноценной программы
Каждый начинающий программист мечтает реализовать свой собственный проект. Не написать простенький код, по заданию преподавателя, а воплотить в жизнь свои идеи. Так и я, изучая C++ 3-4 месяца, решился попробовать разработать макет электронного журнала для преподавателей.
Определившись с темой, приступил к определению необходимых функций программы. Для этого я провел анализ уже существующих сервисов, выполняющих похожие задачи.
По итогу, пришел к выводу, что в программе потребуется реализовать:
- Регистрацию (Reg),
- Авторизацию (Authon),
- Выбор группы (GroupSelection),
- Возможность выставлять оценки (Grades),
- Возможность выставлять посещаемость (Attendance),
- Возможность писать комментарии к датам (Comment),
- Возможность устанавливать dedlin’ы (Deadline).
Для понимания логики работы программы, отражения принципов взаимодействия с ней, упрощения дальнейшего написания кода, была создана полная блок-схема.

Аналогично, были созданы блок схемы для каждой функции.







Написание кода программы
Первым шагом написания программы является добавления необходимых заголовочных файлов, а именно:
- iostream — заголовочный файл с классами, функциями и переменными для организации ввода-вывода.
- string — это заголовочный файл для взаимодействия с
классами string (строками). - fstream — заголовочный файл, включающий набор классов, методов и функций, которые предоставляют интерфейс для чтения/записи данных из/в файл.
Далее была добавлена глобальная переменная, то есть переменная, область действия которой охватывает всю программу. Использование такой переменной потребовалось для реализации удобного взаимодействия с информацией.
std::string nameofgroup;
Чтобы удобно группировать данных в одной переменной для каждого объекта, который оперирует этими данными, мною было объявлено несколько классов, а именно:
Класс данных о преподавателе – DataofTeature.
class DataofTeature < public: std::string name; //имя преподавателя std::string surname; //фамилия преподавателя std::string patronymic; //отчество преподавателя std::string login; //логин преподавателя std::string password; //пароль преподавателя >;
Класс данных о студенте – DataofStudent.
class DataofStudent < public: std::string group; //название группы студента std::string name; //имя студента std::string surname; //фамилия студента >;
Основываясь на ранее представленных блок схемах, был написан код для всех функций. Разберемся с каждой функций подробнее.
Reg
Функция Reg реализует полноценную регистрацию, с записью данных о пользователе в текстовый файл.
В ходе выполнения функции, пользователю предлагается ввести ФИО, логин и пароль. После получения программой логина, проверяется его наличие в системе, если логин совпадает с ранее записанным в базу логинов, то пользователя предлагается ввести логин повторно. Как только программа получает ФИО, пароль и уникальный логин, происходит запись логина в базу для логинов (при открытие базы данных используется режим открытия ios_base::app, позволяющий открыть файл для записи в конец файла, при этом, сохраняя ранее записанные данные), создание специализированного файла для регистрационных данных пользователя, и запись в него ФИО, аналогично создается специальный файл для хранения логина и пароля конкретного пользователя. Формирования уникальных файлов происходит по принципу сложения строк. Например, path=path+teature1.login+txt, где path-путь к директории, в которой хранятся файлы программы, teature1.login – уникальный логин пользователя, txt- строка, хранящая в себе “.txt”.
void Reg() < std::string path = "C:\\journal\\regdata", datalog = "C:\\journal\\logdata.txt", txt = ".txt", user = "C:\\journal\\", delfile = "C:\\journal\\delfile.txt"; //объявление переменных типа string bool flag = 1; //объявление переменной типа bool DataofTeature teature1; //объявление переменной класса DataofTeature std::ofstream fout; //объявление переменной класса ofstream std::ifstream fin; //объявление переменной класса ifstream std::cout > teature1.surname; std::cout > teature1.name; std::cout > teature1.patronymic; std::cout > teature1.login; while (flag) < bool flag2 = 0; fin.open(datalog); if (fin.is_open()) < std::string data = ""; while (!fin.eof()) < std::getline(fin, data); if (teature1.login == data) //проверка на существование данного логина в файле < flag2 = 1; flag = 1; >> > else < std::cout if (flag2) < std::cout > teature1.login; flag = 1; > else < flag = 0; //изменение булевой переменной для выхода из цыкла >fin.close(); > path = path + teature1.login + txt; //формирование пути, для создания файла с ФИО аккаунта fout.open(path); if (fout.is_open()) < fout else < std::cout fout.close(); std::cout > teature1.password; //ввод пароля fout.open(datalog, std::ios_base::app); //открыть файл для записи в конец файла if (fout.is_open()) < fout else < std::cout fout.close(); user = user + teature1.login + txt; //формирование пути хранения логина и пароля fout.open(user); //открытия файла if (fout.is_open()) < fout else < std::cout fout.close(); >
Authon
Функция Authon реализует авторизацию пользователя в программу.
В ходе выполнения функции, пользователю предлагается ввести логин и пароль. Следом идет проверка наличия логина в базе логинов, если логина в базе нет, пользователю
предлагается ввести логин повторно. Получив логин, программа открывает
специализированный файл пользователя, получая к нему путь, методом сложения
строк. В этом файле проверяется верность пароля, если пароль не совпадает, то
предлагается ввести пароль повторно. Как только все данные проверены, программа
открывает файл с ФИО пользователя и выводит на экран приветствие, используя ФИО
пользователя.
void Authon() < std::string path = "C:\\journal\\regdata", datalog = "C:\\journal\\logdata.txt", txt = ".txt", user = "C:\\journal\\", delfile = "C:\\journal\\delfile.txt", login, password, filelog = ""; //объявление переменных типа string DataofTeature teature1; //объявление переменной класса DataofTeature std::ifstream fin; //объявление переменной класса ifstream bool flag = 1; //объявление переменной типа bool std::cout > login; //ввод логина while (flag) < bool flag2 = 0; fin.open(datalog); //проверка наличия логина в базе логинов if (fin.is_open()) < while (!fin.eof()) < std::getline(fin, filelog); if (login == filelog) < flag = 0; flag2 = 0; break; >else < flag2 = 1; >> > else < std::cout if (flag2) < std::cout > login; > fin.close(); > user = user + login + txt; //формирования пути нахождения файла с логинами и паролями flag = 1; std::cout > password; while (flag) < bool flag2 = 0; fin.open(user); if (fin.is_open()) < while (!fin.eof()) < std::getline(fin, filelog); if (password == filelog) < //проверка верности пароля flag = 0; flag2 = 0; break; >else < flag2 = 1; >> > else < std::cout if (flag2) < std::cout > password; > fin.close(); > std::cout > else < std::cout fin.close(); std::cout
GroupSelection
Функция реализует полноценный выбор группы в программе.
В ходе выполнения функции на экран выводится полный список групп, содержащихся в системе. Пользователю предоставляется возможность ввести название необходимой ему группы. После получения программой наименования, происходит проверка на наличие данной группы в списке групп, если такая группа отсутствует, то пользователю предлагается ввести название группы повторно. Как только проверка пройдена, название группы передается в глобальную переменную, для дальнейшего использования в других функциях.
void GroupSelection() < DataofStudent stud1; //объявление переменных класса DataofStudent std::string allgroup = "", path = "C:\\journal\\allgroup\\allgroup.txt", delfile = "C:\\journal\\allgroup\\delfile.txt", path2 = "C:\\journal\\allgroup\\", txt = ".txt", choice = ""; //объявление переменных типа string bool flag = 1; //объявление переменных типа bool std::ifstream fin; //объявление переменной класса ifstream std::ofstream fout; //объявление переменной класса ofstream std::cout > else < std::cout fin.close(); std::cout > stud1.group; //ввод название необходимой группы while (flag) < bool flag2 = 1; fin.open(path); if (fin.is_open()) < std::string data = ""; while (!fin.eof()) < std::getline(fin, data); if (stud1.group == data) //проверка на наличие введенной группы в списке групп < flag2 = 0; flag = 0; >> > else < std::cout if (flag2) < std::cout > stud1.group; //просьба ввести название группы повторно flag = 1; > else < flag = 0; //изменение буливой переменной для выхода из цыкла >fin.close(); > nameofgroup = stud1.group; //присваивание названия группы в глобальную переменную >
Grades
Функция Grades реализует, простановку оценок студентам.
В ходе выполнения функции, пользователю предлагается ввести дату, за которую он хочет выставить оценку. После получения программой даты, происходит проверка на существование файла с оценками на данную дату. Если файл существует, то происходит его запись в специализированный промежуточный файл, это происходит для реализации корректной и органичной записи в файл отметок, без потерь данных. Если файл не существует, то программа копирует данные из файла со списком группы в промежуточный файл. Следом, на экран выводится полный список группы с отметками (если они есть). Пользователю предлагается ввести фамилию и имя студента, которому он хочет выставить оценку. Как только программа получает эти данные, происходит проверка на наличие данного студента в группе, если его нет, то пользователю предлагается ввести фамилию и имя повторно. После получения данных программой, происходит создание файла для оценок на данную дату (принцип нахождения пути файла и формирования его название – сложение строк). Следом, идет поиск данного студента в промежуточном файле. Принцип поиска и записи таков: если фамилия и имя не совпадает с введенными пользователем, то происходит запись этих данных в файл с оценками, если ФИ совпали, то пользователю предлагается ввести студенту оценку, полученная строчка записывается в файл с оценками. В конце работы функции, на экран выводится список группы с внесенными изменениями.
void Grades() < DataofStudent student1; //объявление переменных класса DataofStudent std::string way = "C:\\journal\\allgroup\\", delfile = "delfile.txt", txt = ".txt", attendance = "\\grade", choice = ""; //объявление переменных типа string bool flag = 0, flag2 = 1; //объявление переменных типа bool std::ofstream fout; //объявление переменной класса ofstream std::ifstream fin; //объявление переменной класса ifstream std::cout > choice; //ввод даты fin.open(way + nameofgroup + attendance + choice + txt); if (fin.is_open()) < flag = 1; //проверка наличия файла с оценками на данную дату >fin.close(); if (flag) < fin.open(way + nameofgroup + attendance + choice + txt); fout.open(way + delfile); if (fin.is_open() and fout.is_open()) < std::string data = ""; while (!fin.eof()) //запись данных существующего файла в специализированный файл < std::getline(fin, data); fout > else < std::cout fin.close(); fout.close(); > else < fin.open(way + nameofgroup + txt); fout.open(way + delfile); if (fin.is_open() and fout.is_open()) < std::string data = ""; while (!fin.eof()) < //запись в специализированный файл списка группы std::getline(fin, data); fout > else < std::cout fin.close(); fout.close(); > fin.open(way + delfile); if (fin.is_open()) < std::string data = ""; while (!fin.eof()) //вывод списка группы на экран < std::getline(fin, data); std::cout > else < std::cout fin.close(); std::cout > student1.name; //ввод фамили и имени студента while (flag2) < fin.open(way + delfile); if (fin.is_open()) < std::string data = ""; while (!fin.eof()) < std::getline(fin, data); if (data == student1.name) < flag2 = 0; //проверка наличия данно ФИ в списке группы >> > else < std::cout if (flag2) < std::cout > student1.name; > fin.close(); > fin.open(way + delfile); fout.open(way + nameofgroup + attendance + choice + txt); if (fin.is_open() and fout.is_open()) < std::string data = ""; while (!fin.eof()) < std::getline(fin, data); if (data == student1.name) < bool flag3 = 1; for (int i = 0; i < data.length(); i++) < //процесс нахождения ФИ студента в файле if (flag3 and data[i] != '\t') < fout else < flag3 = 0; >> std::string choice2; std::cout > choice2; fout else < fout > > else < std::cout fin.close(); fout.close(); std::cout > else < std::cout fin.close(); >
Attendance
Функция Attendance реализует простановку посещаемости студентов с последующей записью в файл.
В ходе выполнения функции, пользователю предлагается ввести дату, за которую он хочет выставить посещаемость. После получения программой даты, происходит проверка на существование файла с посещаемостью на данную дату. Если файл существует, то происходит его запись в специализированный промежуточный файл, это происходит для реализации корректной и органичной записи в файл посещаемости, без потерь данных. Если файл не существует, то программа копирует данные из файла со списком группы в промежуточный файл. Следом, на экран выводится полный список группы с посещаемостью (если она есть). Пользователю предлагается ввести фамилию и имя студента, которому он хочет выставить посещаемость. Как только программа получает эти данные, происходит проверка на наличие данного студента в группе, если его нет, то пользователю предлагается ввести фамилию и имя повторно. После получения данных программой, происходит создание файла для посещаемости на данную дату (принцип нахождения пути файла и формирования его название – сложение строк). Следом, идет поиск данного студента в промежуточном файле. Принцип поиска и записи таков: если фамилия и имя не совпадает с введенными пользователем, то происходит запись этих данных в файл с оценками, если ФИ совпали, то пользователю предлагается ввести посещаемость студента, полученная строчка записывается в файл с посещаемостью. В конце работы функции, на экран выводится список группы с внесенными изменениями.
void Attendance() < DataofStudent student1; //объявление переменной класса DataofStudent std::string way = "C:\\journal\\allgroup\\", delfile = "delfile.txt", txt = ".txt", attendance = "\\attendance", choice = "";//объявление переменных типа string bool flag = 0, flag2 = 1; //объявление переменной типа bool std::ofstream fout; //объявление пременной класса ofstream std::ifstream fin; //объявление переменной класса ifstream std::cout > choice; //ввод даты fin.open(way + nameofgroup + attendance + choice + txt); if (fin.is_open()) < flag = 1; //проверка на наличие файла >fin.close(); if (flag) < fin.open(way + nameofgroup + attendance + choice + txt); fout.open(way + delfile); if (fin.is_open() and fout.is_open()) < std::string data = ""; while (!fin.eof()) //запись данных файла в промежуточный файл < std::getline(fin, data); fout > else < std::cout fin.close(); fout.close(); > else < fin.open(way + nameofgroup + txt); fout.open(way + delfile); if (fin.is_open() and fout.is_open()) < std::string data = ""; while (!fin.eof()) < //запись списка группы в промежуточный файл std::getline(fin, data); fout > else < std::cout fin.close(); fout.close(); > fin.open(way + delfile); if (fin.is_open()) < std::string data = ""; while (!fin.eof()) < std::getline(fin, data); std::cout > else < std::cout fin.close(); std::cout > student1.name; //ввод фамили и имени студента while (flag2) < fin.open(way + delfile); if (fin.is_open()) < std::string data = ""; while (!fin.eof()) < std::getline(fin, data); if (data == student1.name) //проверка на наличие данного студента в группе < flag2 = 0; >> > else < std::cout if (flag2) < std::cout > student1.name; > fin.close(); > fin.open(way + delfile); fout.open(way + nameofgroup + attendance + choice + txt); if (fin.is_open() and fout.is_open()) < std::string data = ""; while (!fin.eof()) < std::getline(fin, data); if (data == student1.name) < bool flag3 = 1; for (int i = 0; i < data.length(); i++) < if (flag3 and data[i] != '\t') < fout else < flag3 = 0; >> std::string choice2; std::cout > choice2; //ввод посещаемости fout else < fout > > else < std::cout fin.close(); fout.close(); std::cout << "\n"; fin.open(way + nameofgroup + attendance + choice + txt); if (fin.is_open()) < std::string data = ""; while (!fin.eof()) < std::getline(fin, data); //вывод измененных данных на экран std::cout << "\t\t\t" > else < std::cout fin.close(); >
Comment
Функция Comment реализует в программе написание комментария к дате.
В ходе выполнения функции, пользователю предлагается ввести дату, для которой он хочет написать комментарий. При получении программой даты, происходит открытие файла с режимом открытия ios_base::app (открыть файл для записи в конец файла). Наименование файла и путь его нахождения формируется, путем сложения строк. Пользователю предлагается ввести комментарий. Происходит запись данных в файл. После на экран выводятся изменённые данные файла.
void Comment() < DataofStudent student1;//объявление переменной класса DataofStudent std::string way = "C:\\journal\\allgroup\\", delfile = "delfile.txt", txt = ".txt", attendance = "\\comment", choice = ""; //объявление переменнх типа string std::ofstream fout;//объявление переменной класса ofstream std::ifstream fin;//объявление переменной класса ifstream std::cout > choice; //ввод даты fout.open(way + nameofgroup + attendance + choice + txt, std::ios_base::app); if (fout.is_open()) < std::string choice2; std::cout > choice2; fout else < std::cout std::cout > else < std::cout fin.close(); >
Deadline
Функция Deadline реализует в программе создание dedlin’а и комментария к нему, с записью этих данных в файл.
В ходе выполнения функции, пользователю предлагается ввести дату, на которую он хочет установить deadline. При получении программой даты, происходит открытие файла с режимом открытия ios_base::app (открыть файл для записи в конец файла). Наименование файла и путь его нахождения формируется, путем сложения строк. Пользователю предлагается ввести комментарий. Происходит запись данных в файл. После на экран выводятся изменённые данные файла.
void Deadline() < DataofStudent student1; //объявление переменной класса DataofStudent std::string way = "C:\\journal\\allgroup\\", delfile = "delfile.txt", txt = ".txt", attendance = "\\deadline", choice = ""; //объявление переменной типа string std::ofstream fout; //объявление переменной класса ofstream std::ifstream fin; //объявление переменной класса ifstream std::cout > choice; //ввод даты fout.open(way + nameofgroup + attendance + choice + txt, std::ios_base::app); if (fout.is_open()) < std::string choice2; std::cout > choice2; fout else < std::cout std::cout > else < std::cout fin.close(); >
Main
Аналогично, основываясь на блок схеме, был написан код основной части программы.
В ходе выполнения программы, на экран выводится меню. Пользователю предлагается выбрать один из пунктов. При выборе пункта 1, вызывается функция Reg, а затем функция Authon; При выборе пункта 2, вызывается функция Authon; При выборе пункта 3 происходит выход из программы. После успешной авторизации вызывается функция GroupSelection. После выбора группы на экран выводится меню дальнейших действий. Пользователю предлагается выбрать один из пунктов. При выборе пункта 1 вызывается функция Grades; При выборе пункта 2 вызывается функция Attendance; При выборе пункта 3 вызывается функция Deadline; При выборе пункта 4 вызывается функция Comment; При выборе пункта 5 происходит выход из программы.


void main() < std::string choice = ""; //объявление переменной типа string bool flag = 1; //объявление переменной типа bool setlocale(0, ""); //установка языкового стандарта для яязыка std::cout > choice;//ввод символа, отвечающего за выбор пункта меню if (choice == "3") < return; //выход из программы >while (flag) < if (choice == "1") < flag = 0; Reg(); //регистрация Authon();//авторизация >else < if (choice == "2" and flag) < Authon(); //авторизация flag = 0; >else < std::cout > choice; //повторное осуществленеи выбора пункта меню > > > GroupSelection(); //выбор группы std::cout > choice; // ввод символа, отвечающего за выбор пункта меню flag = 1; while (flag) < if (choice == "1") < flag = 0; Grades(); //простанока оценки >if (choice == "2") < flag = 0; Attendance(); //простановка посещаемости >if (choice == "3") < flag = 0; Deadline(); //установка deadlin'a >if (choice == "4") < flag = 0; Comment(); //написание комментария >if (choice == "5") < return; //выход из программы >if (choice != "1" and choice != "2" and choice != "3" and choice != "4" and choice != "5") < flag = 1; std::cout > choice; //повторное осуществление выбора пункта меню > > >
Для реализации полноценной работоспособности моей программы необходимо создать несколько текстовых файлов и директорий согласно диаграмме.

В файл allgroup.txt необходимо записать название группы. Также папке allgroup нужно создать папку с название группы и текстовый документ с названием группы, в который необходимо занести список группы.
Тестирование и отладка программы
Для проведения корректного и полного тестирования следует поставить несколько тест кейсов, а именно.







В ходе тестирования программы критических ошибок выявлено не было.
Заключение
По итогу у меня получилось разработать макет электронного журнала для преподавателей, содержащий следующие компоненты:
- Класс DataofTeature, хранящий в себе информацию о преподавателе.
- Класс DataofStudent, хранящий в себе информацию о студенте.
- Функция Reg, реализующая регистраци.
- Функцию Authon, реализующая авторизацию в программу.
- Функция GroupSelection, реализующая выбор группы.
- Функция Grades, реализующая простановку оценок.
- Функция Attendance, реализующая простановку посещаемости.
- Функция Comment, отвечающая за возможность написания комментария к дате.
- Функция Deadline, дающая возможность установить дэдлайн и написать к нему комментарий.
- Функция main, в которой реализовано основное взаимодействие пользователя с программой (меню и т.д.).
Весь код программы был написан в среде разработки Visual Studio 2022. Суммарный объем строк в тексте программы составляет 724.