Загрузить PDF
Загрузить PDF
По мере того как технология становится все более и более доступной широкой публике, растет и потребность в программистах. Написание компьютерных кодов и программ, оно же кодинг (от английского «сoding») — это навык, который приобретается и совершенствуется на протяжении долгого времени, но даже самый опытный программист когда-то был новичком. Существует большое разнообразие языков программирования, которые великолепно подходят для начинающих программистов, вне зависимости от того, в какой сфере деятельности вы хотите применять ваши навыки (например, JavaScript довольно сложен, так что лучше начать с HTML или CSS). Узнайте, как научиться писать компьютерные программы, прочитав эту статью.
-
1
Не слишком волнуйтесь по поводу того, какой язык вам стоит выбрать для изучения. Многие начинающие программисты затрудняются выбрать язык, когда они только начинают изучать написание программных кодов. Непосредственно сам язык, который вы выберете, не имеет значения, когда речь заходит об изучении структур и логики построения информации. Эти навыки являются намного более важными, и их можно выучить с любым языком программирования.[1]
- Выбирая язык, сконцентрируйтесь на том, в каких целях вы хотите создавать программные коды, и уже потом выбирайте начальный язык. К примеру, если вы хотите заниматься разработкой веб-сайтов, то вам следует начать с изучения HTML5, а затем дополнить его языками CSS, JavaScript и PHP. Если вы хотите создавать компьютерные программы, то начните изучать C++ или любой другой основной язык программирования.
- Если вы станете профессиональным программистом, то вы можете обнаружить, что никогда не используете язык, который вы изначально выучили, для своей работы. Вместо этого вы будете все время продолжать учить новые языки через документацию и эксперименты.
-
2
Найдите бесплатные онлайн-ресурсы, посвященные вашему выбранному языку. Интернет — это сундук с сокровищами, который хранит в себе бесплатные пособия, курсы и видео, посвященные языку, который вы решили учить. Вы можете выучить основы почти любого вводного языка буквально за день.
- Вот только несколько популярных сайтов: Bento, CodeAcademy, Code.org, html.net, Khan Academy, Udacity, W3Schools и многие другие.
- На wikiHow тоже можно найти разнообразные инструкции для начинающих изучать языки программирования.
- Вы можете найти обучающие видео практически для любого языка на YouTube.
- Stack Exchange — это один из самых популярных форумов, на котором профессиональные программисты отвечают на любые вопросы пользователей.
СОВЕТ СПЕЦИАЛИСТА
Арчана Рамамурти — технический директор Workday (Северная Америка). Высококлассный специалист по продуктам, поборница безопасности, сторонница большего распространения интеграции на равных для всех условиях в индустрии технологий. Получила степень бакалавра в Университете SRM и магистра в Университете Дьюка. Работает в области продакт-менеджмента более восьми лет.
Наш специалист делится своей историей:: «Я пришла к написанию кодов, не зная ничего ни о компьютерном дизайне, ни о программировании. Когда я захотела научиться писать программы, я начала с чтения книг по языку и с использования информации из интернета. Сегодня в мире доступно так много ресурсов, что научиться новым навыкам очень легко!»
-
3
Скачайте хороший текстовый редактор. Многие языки программирования позволяют использовать внешние текстовые редакторы для написания программ. Найдите текстовый редактор, который будет отображать отступы и кодовую разметку.
- К популярным программам относятся Notepad++ (Windows), TextWrangler (OS X) и JEdit (любая система).
-
4
Скачайте любые необходимые компиляторы. Некоторые языки программирования требуют компилятор для отображения исходного кода, который вы написали. Компиляторы транслируют исходный код в эквивалентную программу на языке низкого уровня, которая затем обрабатывается компьютером. Многие компиляторы бесплатны и находятся в открытом доступе. Языки, которые требуют использования компиляторов, включают:
- C;
- C++;
- C#;
- Java;
- BASIC;
- Fortran.
-
5
Начните свой первый проект. Выберите хороший вводный проект, который позволит вам испробовать ваши новые навыки. В интернете существует множество предложений и пособий по этой теме. Например, вы можете начать с создания простых веб-сайтов на HTML, простых баз данных и функций на PHP или простых программ на любом из языков, требующих использования компиляторов.
-
6
Комментируйте весь свой код. Все языки программирования имеют функцию комментирования, которая позволяет вводить текст, игнорируемый компилятором. Таким образом к коду можно оставлять комментарии. Эти комментарии исключительно важны, как для того, чтобы сообщить другим, как работает ваш код, так и для того, чтобы напомнить самому себе, что делает код.
- Функцию комментирования можно использовать для того, чтобы быстро убрать часть кода из программы в целях тестирования. Поставьте теги как для комментария в начале и в конце кода, который вы хотите временно исключить из программы, а затем удалите эти теги, чтобы вернуть код.
-
7
Рассматривайте детали других программ или веб-проектов. Когда вы учите код на ходу, не стыдитесь искать подсказки в интернете и смотреть, как другие люди решают аналогичные задачи. Уделяйте время тому, чтобы понять, каким образом код делает то, что он делает.
- Почитайте эту статью, чтобы узнать, как просмотреть исходный код любого веб-сайта.
Реклама
-
1
Запишитесь на курсы. Университеты, колледжи и интернет-программы предлагают программы и курсы, которые не только научат вас программированию, но и помогут вам найти работу. Хотя университетский диплом по специальности программиста не всегда нужен, он может помочь вам найти постоянную работу в качестве программиста.[2]
- Неоспорима и польза от прямого общения с учителем или специалистом в области программирования, которое не всегда доступно через онлайн-курсы.
- Обучение на программиста может обойтись вам довольно дорого, поэтому внимательно подумайте, стоит ли оно того. Если вы увлекаетесь написанием компьютерных программ только в качестве хобби, то вам не стоит тратить время и деньги на профессиональные курсы. Если же вы хотите построит карьеру в этой области, то получение профессионального образования может значительно вам в этом помочь (но, опять же, оно необязательно, если у вас есть талант).
-
2
Расширьте ваши знания. Вы получите пользу не только от изучения языков программирования, но и от курсов по математике и логике, так как эти предметы часто требуются для программирования на высоком уровне. Вам необязательно учить их в учебном заведении, хотя академическая среда может быть полезна.
- Программирование, включающее физические расчеты и моделирование, требует хорошего понимания алгоритмов и моделей.
- Логика — фундаментальная основа программирования, так что понимание логики и процессов поможет вам решать проблемы при написании кода.
- Знание высшей математики чаще всего не требуется для программирования, однако его можно использовать для оптимизации и других преимуществ.
-
3
Выучите больше языков. Когда вы хорошо разобрались с вашим первым языком, вы можете начать учить и другие языки программирования. Найдите язык, который дополняет тот, который вы уже знаете, или же выберите язык, который необходим для определенного проекта. Дополнительные языки, вроде HTML и CSS, как правило, легче всего выучить.
- Java — один из самых популярных языков, и Java-разработчики всегда очень востребованы. Java используется в самых разных системах и имеет бесчисленное множество вариантов применения. На Java пишут приложения для Android — один из самых быстрорастущих рынков.
- C++ очень рекомендуется, если вы хотите влиться в ряды разработчиков видеоигр. Если вы научитесь программировать на Unity (широко используемый и дешевый игровой движок) и UDK (код для популярного движка Unreal), это откроет перед вами некоторые двери, однако они не так полезны за пределами игровой индустрии.
- Если вы хотите создавать приложения для iPhone, Xcode и Objective-C будут вашими первейшими инструментами. Вам понадобится компьютер Mac, посколько компилировать Xcode можно только на Mac.
- Python — язык для написания серверного кода, один из наиболее легких в изучении. Python используется для таких интернет-сервисов, как Pinterest и Instagram, и он достаточно прост, чтобы изучить основы всего за несколько дней.
-
4
Будьте терпеливы. Занимаясь программированием, вы часто будете сталкиваться с проблемами, особенно при поиске багов или применении новых идей. Вам будет необходимо научиться быть довольным достижением небольших результатов, вместо того чтобы решать всю проблему за раз. Терпение поможет вам создать лучший код, а значит, программа будет лучше функционировать и коллеги будут довольны.
-
5
Научитесь работать в команде. Если над проектом одновременно работает несколько человек, у них может быть разное видение того, как этот проект должен проходить. Работа в команде практически неизбежна в деловом мире, поэтому будьте готовы работать с другими людьми, если вы, конечно же, не собираетесь разрабатывать весь проект самостоятельно.
-
6
Найдите работу, на которой вы сможете практиковать свои навыки программирования. Создавайте веб-сайты и компьютерные программы на волонтерской основе. Подработка в небольшой компании также может открыть возможности для написания кода для веб-сайтов и простых программ.
-
7
Общайтесь с другими программистами. Существуют бесчисленные сообщества разработчиков, где вы можете найти поддержку и вдохновение. Ищите конвенции программистов, участвуйте в хакатонах или геймджемах (сборах разработчиков для создания за ограниченное время программ или игр), зарегистрируйтесь на нескольких форумах по программированию, чтобы начать заявлять о себе и обрастать связями.
-
8
Практикуйтесь, практикуйтесь и практикуйтесь. По некоторым оценкам, нужно заниматься программированием около 15 000 часов, прежде чем вас можно будет считать настооящим мастером.[3]
Это означает годы постоянной практики. Вы по-настоящему овладеете мастерством программирования, только когда вложите много времени в практическую работу и станете знатоком своего дела..- Старайтесь заниматься программированием каждый день, даже в выходные. Программирование в свободное время может способствовать прорывам и возникновению новых идей.
Реклама
Об этой статье
Эту страницу просматривали 91 245 раз.
Была ли эта статья полезной?
Первый опыт написания полноценной программы
Время на прочтение
17 мин
Количество просмотров 13K
Каждый начинающий программист мечтает реализовать свой собственный проект. Не написать простенький код, по заданию преподавателя, а воплотить в жизнь свои идеи. Так и я, изучая 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 << "tttРегистрация:n"; //ввод даных, необходимых для регистрации
std::cout << "Введите фамилию: ";
std::cin >> teature1.surname;
std::cout << "Введите имя: ";
std::cin >> teature1.name;
std::cout << "Введите отчество: ";
std::cin >> teature1.patronymic;
std::cout << "Введите логин: ";
std::cin >> 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 << "ERROR"; //Файл не удалось создать или открыть
}
if (flag2)
{
std::cout << "Данный логин уже существует, придумайте другой логин: "; //прозьба ввести логин повторно, если введенный до этого уже существует
std::cin >> teature1.login;
flag = 1;
}
else
{
flag = 0; //изменение булевой переменной для выхода из цыкла
}
fin.close();
}
path = path + teature1.login + txt; //формирование пути, для создания файла с ФИО аккаунта
fout.open(path);
if (fout.is_open())
{
fout << teature1.surname << "n";
fout << teature1.name << "n"; //запись данных в файл
fout << teature1.patronymic << "n";
}
else
{
std::cout << "ERROR"; //Файл не удалось создать или открыть
}
fout.close();
std::cout << "Введите пароль: ";
std::cin >> teature1.password; //ввод пароля
fout.open(datalog, std::ios_base::app); //открыть файл для записи в конец файла
if (fout.is_open())
{
fout << teature1.login << "n"; //запись данных в файл
}
else
{
std::cout << "ERROR"; //Файл не удалось создать или открыть
}
fout.close();
user = user + teature1.login + txt; //формирование пути хранения логина и пароля
fout.open(user); //открытия файла
if (fout.is_open())
{
fout << teature1.login << "n";
fout << teature1.password << "n"; //запись данных в файл
}
else
{
std::cout << "ERROR"; //Файл не удалось создать или открыть
}
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 << "tttАвторизация:n";
std::cout << "Введите логин: ";
std::cin >> 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 << "ERROR"; //Файл не удалось создать или открыть
}
if (flag2)
{
std::cout << "Такого логина не существует, введите логин повторно: n"; //просьба ввести логин повторно
std::cin >> login;
}
fin.close();
}
user = user + login + txt; //формирования пути нахождения файла с логинами и паролями
flag = 1;
std::cout << "Введите пароль: "; //ввод пароля
std::cin >> 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 << "ERROR"; //Файл не удалось создать или открыть//
}
if (flag2)
{
std::cout << "Пароль введен не верно, попробуйте еще раз: n"; //просьба ввести пароль повторно
std::cin >> password;
}
fin.close();
}
std::cout << "Добро пожаловать ";
path = path + login + txt;
fin.open(path);
if (fin.is_open())
{
std::string data = ""; //вывод приветствия на экран
while (!fin.eof())
{
std::getline(fin, data);
std::cout << data << " ";
}
}
else
{
std::cout << "ERROR"; //Файл не удалось создать или открыть
}
fin.close();
std::cout << "n";
}
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 << "Полный список групп: n";
fin.open(path);
if (fin.is_open())
{
std::string data = "";
while (!fin.eof())
{
std::getline(fin, data); //вывод а экран полного списка групп
std::cout << "ttt" << data << "n";
}
}
else
{
std::cout << "ERROR"; //Файл не удалось создать или открыть//
}
fin.close();
std::cout << "Введите название группы, которую хотите открыть: ";
std::cin >> 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 << "ERROR"; //Файл не удалось создать или открыть
}
if (flag2)
{
std::cout << "Данной группы не существует, введите другую группу: ";
std::cin >> 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 << "Введите дату за которую вы хотите проставить оценки: ";
std::cin >> 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 << data << "n";
}
}
else
{
std::cout << "ERROR"; //Файл не удалось создать или открыть
}
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 << data << "n";
}
}
else
{
std::cout << "ERROR"; //Файл не удалось создать или открыть
}
fin.close();
fout.close();
}
fin.open(way + delfile);
if (fin.is_open())
{
std::string data = "";
while (!fin.eof()) //вывод списка группы на экран
{
std::getline(fin, data);
std::cout << data << "n";
}
}
else
{
std::cout << "ERROR"; //Файл не удалось создать или открыть
}
fin.close();
std::cout << "Введите фамилию и имя студента. которому вы хотите выставить оценку: " << std::endl;
std::cin >> 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 << "ERROR"; //Файл не удалось создать или открыть
}
if (flag2)
{
std::cout << "Такого студента не существует, повторите ввод фамилии и имени: "; //повторный ввод ФИ студента
std::cin >> 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 << data[i]; //запись данных в файл с оценками
}
else
{
flag3 = 0;
}
}
std::string choice2;
std::cout << "Введите оценку: "; //ввод оценки
std::cin >> choice2;
fout << "t" << choice2 << "n"; //запись данных в файл с оценками
}
else
{
fout << data << "n"; //запись данных в файл с оценками
}
}
}
else
{
std::cout << "ERROR"; //Файл не удалось создать или открыть
}
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 << "ttt" << data << "n"; //вывод измененных данных на экран
}
}
else
{
std::cout << "ERROR"; //Файл не удалось создать или открыть
}
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 << "Введите дату за которую вы хотите проставить посещаемость: ";
std::cin >> 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 << data << "n";
}
}
else
{
std::cout << "EROR";
}
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 << data << "n";
}
}
else
{
std::cout << "EROR";
}
fin.close();
fout.close();
}
fin.open(way + delfile);
if (fin.is_open())
{
std::string data = "";
while (!fin.eof())
{
std::getline(fin, data);
std::cout << data << "n"; //ввывод списка группы на экран
}
}
else
{
std::cout << "EROR";
}
fin.close();
std::cout << "Введите фамилию и имя студента. которому вы хотите выставить посещаемость: " << std::endl;
std::cin >> 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 << "EROR";
}
if (flag2)
{
std::cout << "Такого студента не существует, повторите ввод фамилии и имени: "; //повторный ввод ФИ студента
std::cin >> 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 << data[i]; //процесс нахождения студента в файле
}
else
{
flag3 = 0;
}
}
std::string choice2;
std::cout << "Введите посещаемость: ";
std::cin >> choice2; //ввод посещаемости
fout << "t" << choice2 << "n";
}
else
{
fout << data << "n";
}
}
}
else
{
std::cout << "EROR";
}
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 << "ttt" << data << "n";
}
}
else
{
std::cout << "ERROR"; //Файл не удалось создать или открыть
}
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 << "Введите дату для которой вы хотите оставить коментарий: ";
std::cin >> choice; //ввод даты
fout.open(way + nameofgroup + attendance + choice + txt, std::ios_base::app);
if (fout.is_open())
{
std::string choice2;
std::cout << "Введите коментарий: "; //ввод коментария
std::cin >> choice2;
fout << choice2 << "n";
}
else
{
std::cout << "ERROR"; //Файл не удалось создать или открыть
}
std::cout << "n";
fout.close();
fin.open(way + nameofgroup + attendance + choice + txt);
if (fin.is_open())
{
std::string data = "";
while (!fin.eof())
{
std::getline(fin, data); //вывод изменненных данных на экран
std::cout << "ttt" << data << "n";
}
}
else
{
std::cout << "ERROR"; //Файл не удалось создать или открыть
}
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 << "Введите дату на которую вы хотите установить deadline: ";
std::cin >> choice; //ввод даты
fout.open(way + nameofgroup + attendance + choice + txt, std::ios_base::app);
if (fout.is_open())
{
std::string choice2;
std::cout << "Введите коментарий к deadlin'у: "; //ввод коментария
std::cin >> choice2;
fout << choice2 << "n";
}
else
{
std::cout << "ERROR"; //Файл не удалось создать или открыть
}
std::cout << "n";
fout.close();
fin.open(way + nameofgroup + attendance + choice + txt);
if (fin.is_open())
{
std::string data = "";
while (!fin.eof())
{
std::getline(fin, data);
std::cout << "ttt" << data << "n"; //вывод измененных данных на экран
}
}
else
{
std::cout << "ERROR"; //Файл не удалось создать или открыть
}
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 << "tttДобро пожаловать в электронный журналn"; //вывод меню на экран
std::cout << "tttЕсли вы ходите зарегистрироваться введите 1ntttЕсли выхотите авторизоваться введите 2ntttЕсли вы хотите закрыть программу введите 3n";
std::cin >> 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 << "Сделайте выбор повторно: ";
std::cin >> choice; //повторное осуществленеи выбора пункта меню
}
}
}
GroupSelection(); //выбор группы
std::cout << "ntttВыберете дальнейшее действие:n"; //вывод меню выбора дальнейших действий
std::cout << "tttЕсли вы хотите поставить оценку студенту, введите 1ntttЕсли проставить посещаемость, введите 2ntttЕсли вы хотите установить дату конца дедлайна, введите 3ntttЕсли вы хотите написать коментарий, введите 4ntttЕсли вы хотите закрыть программу введите 5n";
std::cin >> 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 << "Повторите ввод: ";
std::cin >> choice; //повторное осуществление выбора пункта меню
}
}
}
Для реализации полноценной работоспособности моей программы необходимо создать несколько текстовых файлов и директорий согласно диаграмме.
В файл allgroup.txt необходимо записать название группы. Также папке allgroup нужно создать папку с название группы и текстовый документ с названием группы, в который необходимо занести список группы.
Тестирование и отладка программы
Для проведения корректного и полного тестирования следует поставить несколько тест кейсов, а именно.
В ходе тестирования программы критических ошибок выявлено не было.
Заключение
По итогу у меня получилось разработать макет электронного журнала для преподавателей, содержащий следующие компоненты:
-
Класс DataofTeature, хранящий в себе информацию о преподавателе.
-
Класс DataofStudent, хранящий в себе информацию о студенте.
-
Функция Reg, реализующая регистраци.
-
Функцию Authon, реализующая авторизацию в программу.
-
Функция GroupSelection, реализующая выбор группы.
-
Функция Grades, реализующая простановку оценок.
-
Функция Attendance, реализующая простановку посещаемости.
-
Функция Comment, отвечающая за возможность написания комментария к дате.
-
Функция Deadline, дающая возможность установить дэдлайн и написать к нему комментарий.
-
Функция main, в которой реализовано основное взаимодействие пользователя с программой (меню и т.д.).
Весь код программы был написан в среде разработки Visual Studio 2022. Суммарный объем строк в тексте программы составляет 724.
Проект «Объясняю каждую строчку» попытается нести разумное, доброе, вечное не только стримами. Начинаем серию статей об основах ремесла.
Обычно я занимаюсь тем, что запускаю стрим на своём ютуб-канале, открываю Visual Studio и делаю свою видеоигру, попутно объясняя что да как. Но какое-то время назад Microsoft умудрилась так удачно сломать мне мою любимую IDE, что всё встало раком на неделю, а откатиться на прошлую версию Community Edition не позволяет. Поэтому, чтобы не раздолбать голову об клавиатуру во время очередной (четвёртый раз за три месяца) паузы, я попытался нести доброе, разумное, вечное в ином формате. Сделать что-то, что позволить войти в это дело с абсолютного нуля. Мои стримы для этого подходят не очень, так что начну с пересказа школьных учебников информатики с поправкой на опыт, полученный в отрасли. А там, глядишь, и до более сложных концепций доживём.
Дисклеймеры:
- Когда я говорю с абсолютного нуля, я имею в виду с абсолютного НУЛЯ.
- Я сеньор-помидор в EPAM’е. С опытом где-то под десять лет. Не то, чтобы тяну на гуру, но об этих вещах я рассказать ещё могу.
- Эти тексты language-agnostic. Это значит, что излагаемое не привязано ни к какому языку. Скорее всего, я буду приводить примеры на C# и Python. Первый — мой хлеб, второй — немного мне знаком и любим новичками. Почему так? Мастерство -> инструмент. Если ищете здесь туториал по языку, лучше копните документацию. Здесь то, что упростит освоение языков.
- Это не то, что поможет вам устроится на работу завтра. Это то, что поможет вам понять как вообще пишутся эти программы. Эта серия текстов будет недостаточна, если ваш маршрут по этой жизни: «филфак -> макдак -> войти в айти, чтоб не откинуть коньки». Но это поможет лучше понять то, что вам впихивают на трёхмесячных курсах.
- Есть только один язык, который должен знать каждый программирующий: английский. Эти тексты на русском, но желательно, чтобы попадающиеся в программах слова типа «if», «else», «while», «string», «integer» не приводили вас в ступор.
- Писать буду, что называется, под настроение.
Что такое программа? Это инструкция для ЭВМ. Электронно-Вычислительная Машина. Да, я знаю, каким совковым вайбом веет от этого термина. Я бы написал, что для компьютера, но не знаю, можно ли назвать так микроволновки, холодильники, приставки, телефоны, фотоаппараты, телевизоры и весь тот зоопарк устройств в который нынче принято втыкать микросхемы. Инструкция для ЭВМ, естественно, должна быть написана на языке, который этой ЭВМ понятен. Языков — миллиарды, но идеи за ними более-менее схожи.
Одна из них провозглашена Никлаусом Виртом и звучит так: программа = алгоритм + структуры данных. Алгоритм — то, что мы делаем. Структуры данных — то, с чем мы это делаем. Мой план на первые статьи — говорить об каждой из этих половинок по очереди. Сегодня немножко поговорим про первое.
Алгоритм — слово из математики, очень старое. В честь арабского учёного 9 века. Если откинуть лишний формализм, то алгоритм — это пошаговая инструкция, которую исполнитель может понять и выполнить. Инструкция по сборке шкафа из Икеи. Объяснение как пройти в библиотеку. Если объясняющий трезв, конечно. Алгоритм решения квадратных уравнений. Рецепт жаркого на ютубе или в кулинарной книге. Рецепт жаркого, записанный в мультиварке. Алгоритм сортировки чисел. Алгоритм, определяющий что из найденного гуглом важнее. Он, кстати, сделал из гугла тот самый гугл в своё время. Алгоритм, накидывающий вам рекомендации на ютубе. Алгоритм, соотносящий ввод с геймпада и движения Ори. Надеюсь, идея понятна.
И в наших ЭВМ алгоритмы писались на языках, которые понятны этим ЭВМ конечно. И они их понимали, и добросовестно выполняли, но был нюанс. Понимаете, в чём дело. Одно дело, когда алгоритм выглядит так:
1) Попросить пользователя ввести число
2) Прочитать это число
3) Если оно меньше нуля или это вообще не число, переходим к шагу 6
4) Записываем наше неотрицательное число
5) Переходим к шагу 1
6) Теперь «самое большое число» — 0
7) Теперь «мы проверяем» число номер 1
Если номер «мы проверяем» больше количества записанных чисел, переходим к шагу 13
9) Смотрим, какое число записано под номером «мы проверяем»
10) Если оно больше «самого большого числа», то теперь «самое большое число» — число под номером «мы проверяем»
11) «Мы проверяем» увеличивается на 1 (чтоб проверять следующее число)
12) Переходим к шагу номер 9
13) Выводим на экран «самое большое число»
Это немного ломает мозг, но если вы это прочитаете внимательно, то поймёте: если проделать это шаг за шагом, на экране появится самое большое число из тех, что ввёл пользователь. И пока наш алгоритм состоит из 10-15 шагов это не проблема для профессионала, привычного ко всему. А вот когда шагов уже хотя бы 30-50, это со-о-о-овсе-е-ем другое дело:
12) Допустимая белиберда равна 5
…
93) Увеличиваем координату X третьей сепульки в два раза
94) Если координата Х третьей сепульки больше правой границы поля, переходим к шагу номер 27
95) Уменьшаем координату Y третьей сепульки в четыре раза
96) Если координата Y третьей сепульки меньше нижней границы поля, переходим к шагу номер 35
…
115) Нижняя граница поля вводится пользователем
116) Если пользователь ввёл белиберду, к счётчику белиберды прибавляем 1
117) Если пользователь ввёл число, переходим к шагу 120
118) Если счётчик белиберды больше допустимой белиберды, переходим к шагу 17
119) Переходим к шагу 115
120) Верхняя граница поля вводится пользователем
121) Если пользователь ввёл число, переходим к шагу 124
122) Если пользователь ввёл белиберду, к счётчику белиберды прибавляем 1
123) Если счётчик белиберды больше допустимой белиберды, переходим к шагу 17
…
От одной попытки написать с десяток шагов так плавится мозг. Если шагов десятки, это превращается в так называемый «спагетти-код», когда схема порядка шагов похожа на вываленные в кастрюлю макароны. А ведь кто-то так составлял алгоритмы из сотен, тысяч и даже десятков тысяч шагов.
Прервал этот ужас голландский математик Эдгар Дейкстра, который ворвался в зарождающуюся отрасль, открыв дверь с ноги, и заявил приблизительно следующее: «ваши переходы между командами ересь, ад и ужас, мы должны запретить алгоритмы, в которых это есть, больше никаких «переходим к такому-то шагу», вообще никогда, ни при каких условиях, запретите так делать». Взамен предлагалась идея структурного программирования.
Так как Дейкстра был математиком, он доказал, что любой алгоритм, абсолютно любой можно выразить с помощью трёх типов команд: линейное выполнение, ветвление и цикл.
- Линейное выполнение — выполняем команду 1, выполняем команду 2, выполняем команду 3, …, выполняем команду N
- Ветвление — если какое-то условие истинно, выполняем команду 1, иначе выполняем команду 2
- Цикл — пока какое-то условие истинно, выполняем команду 1
Демонстрация идей:
Попросить пользователя ввести число
Пока то, что ввёл пользователь является числом и больше 0
Записать то, что ввёл пользователь
Попросить пользователя ввести число
Теперь «самое большое число» — 0
Теперь номер «мы проверяем» — 1
Пока «мы проверяем» меньше количества записанных чисел
Если число номер «мы проверяем» больше «самого большого числа», то
Теперь «самое большое число» — число номер «то, что мы сейчас проверяем»
К «мы проверяем» добавляем 1
Выводим на экран «самое большое число»
Выглядит уже не так страшно. Догадаться, что мы просим у пользователя числа одно за другим, а потом говорим, какое из них самое большое, уже проще.
Ещё один важный нюанс — отступы. Отступы — это важно. Команды постоянно «вкладываются» и без отступов вы не поймёте, что куда вложено. Например, в Python программа откажется выполняться, если вы обходитесь с отступами абы как. В других языках вас побьют после код-ревью. Такая визуализация, объясняющая, что во что входит, необходима. Именно поэтому программный код всегда пишется моноширинным шрифтом. Без специальной функции «код» в редакторе постов DTF эти туториалы были бы невозможны.
Теперь примеры на настоящих языках.
// Это C#. После двойного слэша идут комментарии для программиста. ЭВМ это проигнорирует
var numbers = new List<int>();
var user_input = Console.ReadLine();
while (int.TryParse(user_input, out var number) && number >= 0)
{
numbers.Add(number);
user_input = Console.ReadLine();
}
var maximum = 0;
var checking_now = 0;
// По сложившейся традиции, почти во всех современных языках программирования
// В списках чисел нумерация начинается с нуля.
// То есть, четыре числа будут иметь номера от 0 до 3
// О том, откуда эта традиция пошла, я могу отдельную статью запилить
while (checking_now < numbers.Count)
{
if (numbers[checking_now] > maximum)
maximum = numbers[checking_now];
checking_now += 1;
}
Console.WriteLine($»Самое большое число — {maximum}»);
Обратите внимание на фигурные скобки. Это наследие языка C, который застал ещё Холодную войну. Они означают «объединить несколько команд в одну». Те самые «линии» из нескольких команд. Очень удобно для компилятора. Многие языки имеют такие конструкции. Да, вы можете записать код в одну строчку, но захочется ли вам так писать? Вам же потом это поддерживать.
Теперь пример на Python.
user_input = input(«I need a number: «)
numbers = []
while user_input.isdigit() and int(user_input) >= 0:
numbers.append(int(user_input))
user_input = input(«I need more numbers: «)
checking_now = 0
maximum = 0
while checking_now < len(numbers):
if numbers[checking_now] > maximum:
maximum = numbers[checking_now]
checking_now += 1
print(«our biggest number is», maximum)
Да, никаких фигурных скобок. Просто создатель python подумал, что раз уж все и так пишут отступы, почему бы не сделать это обязательным и не определять по ним что во что входит.
Код выглядит похожим на C#, но не потому что похожи языки. Как раз таки python и C# считаются крайне непохожими языками. Дело в том, что линейное выполнение, ветвление и цикл — это действительно основа. Есть в нашем мире немало экзотики со своей атмосферой, но если мы говорим о том, с чем вы столкнётесь в этой жизни, не входя в айти слишком глубоко, то это оно. Теперь по отдельности о трёх кирпичах.
Линейное выполнение
Тут всё просто. Команды перечисляются одна за другой. Чаще всего их разделяют точкой с запятой. Иногда просто пишут на отдельной строчке. И почти всегда есть способ сказать ЭВМ «следующая команда — выполнить эти несколько команд по порядку». С помощью те же фигурных скобок. Дальше я иногда буду называть команды операторами, ладно?
Ветвление
Вы уже видели классический if. На всякий случай, покажу как выглядит классический if в его полной форме.
if numbers[checking_now] > maximum:
maximum = numbers[checking_now]
else:
print(«Nope, not this one»)
if (numbers[checking_now] > maximum)
maximum = numbers[checking_now];
else
Console.WriteLine(«Nope, not this one»);
Со временем идеи Дейкстры, конечно, развили. Пришли к такому — у нас будут «линии», ветвления и циклы в их классическом виде, и то, что можно к ним свести при условии, что программы станет проще понимать. То, насколько ваши программы легко понимать — один из основных показателей вашего профессионализма.
А теперь примеры. Частая ситуация на языке C#:
var day = Console.ReadLine();
if (day == «Monday»)
Console.WriteLine(«Kill me, please»);
else if (day == «Tuesday»)
Console.WriteLine(«Meh»);
else if (day == «Wednesday»)
Console.WriteLine(«It’s wednesday, my dudes»);
else if (day == «Thursday»)
Console.WriteLine(«Heh»);
else if (day == «Friday»)
Console.WriteLine(«Party»);
else if (day == «Saturday»)
Console.WriteLine(«Party!»);
else if (day == «Sunday»)
Console.WriteLine(«Party!!!»);
else
Console.WriteLine(«???»);
Да, мы нарушили здесь правило отступов. Потому что иначе последняя команда, которая «вложена» в другие команды на восьмом, что ли уровне, уедет за другой край экрана. А ведь в каждой ветке может быть что-то посложнее, чем «текст на экране». Специально для таких случаев в python (помним, что там с отступами всё предельно серьёзно) пришлось придумать свой «многоветочный» if. Вот как выглядит та же ситуация на этом языке (elif — это сокращение от else if) :
day = input()
if day == «Monday»:
print(«Kill me, please»)
elif day == «Tuesday»:
print(«Meh»)
elif day == «Wednesday»:
print(«It’s wednesday, my dudes»)
elif day == «Thursday»:
print(«Heh»)
elif day == «Friday»:
print(«Party»)
elif day == «Saturday»:
print(«Party!»)
elif day == «Sunday»:
print(«Party!!!»)
else:
print(«???»)
Так вот, python единственный известный мне язык, где возникла необходимость в «многоветочном» if. Для чего нам нужно ветвление? Чтобы наш алгоритм мог принять решение. И классический if позволяет принять решение, исходя из «истина/ложь». Но иногда нам надо принять решение на основе числа или строки, или каких-то данных сложнее, чем «0/1». И вот для этого почти во всех известных мне языках есть оператор выбора. Как обычно, сначала C#, потом python.
//К моему сожалению, оператор выбора в C# уродлив
//Тяжёлое наследство прадедушки C.
//Границы веток определяются оператором break
switch (day)
{
case «Monday»:
Console.WriteLine(«Kill me, please»);
break;
case «Tuesday»:
Console.WriteLine(«Meh»);
break;
case «Wednesday»:
Console.WriteLine(«It’s wednesday, my dudes»);
break;
case «Thursday»:
Console.WriteLine(«Heh»);
break;
case «Friday»:
Console.WriteLine(«Party»);
break;
case «Saturday»:
Console.WriteLine(«Party!»);
break;
case «Sunday»:
Console.WriteLine(«Party!!!»);
break;
default:
Console.WriteLine(«???»);
break;
}
//Иногда лучше написать вот так, конечно:
switch (day)
{
case «Monday»: Console.WriteLine(«Kill me, please»); break;
case «Tuesday»: Console.WriteLine(«Meh»); break;
case «Wednesday»: Console.WriteLine(«It’s wednesday, my dudes»); break;
case «Thursday»: Console.WriteLine(«Heh»); break;
case «Friday»: Console.WriteLine(«Party»); break;
case «Saturday»: Console.WriteLine(«Party!»); break;
case «Sunday»: Console.WriteLine(«Party!!!»); break;
default: Console.WriteLine(«???»); break;
}
//Но только если у вас на проекте так можно
//и вся команда это одобрила на код-ревью
#Моя память сыграла со мной злую шутку
#Оказывается, оператор выбора в его классическом виде
#Добавили в python вот прям щас
#Гвидо Ван Россум, видно, в своё время решил
#Раз уж нам пришлось ввести elif, то его и хватит
#Кстати, НИКОГДА не пренебрегайте никакими возможностями
#Сделать вашу программу понятнее. Даже если это порядок ветвей
match day:
case «Tuesday»:
print(«Meh»)
case «Wednesday»:
print(«It’s wednesday, my dudes»)
case «Thursday»:
print(«Heh»)
case «Friday»:
print(«Party»)
case «Saturday»:
print(«Party!»)
case «Sunday»:
print(«Party!!!»)
case «Monday»:
print(«Kill me, please»)
case default:
print(«???»)
Резюмируем. Оператор ветвления нам нужен, чтобы в какой-то поворотный момент принять решение, что делать дальше. Для случаев, когда параметр для принятия решения сложнее, чем «да/нет», вводятся операторы ветвления сложнее. Это ок, потому что их можно свести к класическим «if» и они упрощают программы.
Цикл
Сначала классический цикл на python. Просто делаем что-то, пока не сделаем это на все сто процентов. Простая идея.
done_work = 0
while done_work < 100:
portion_of_work = do_some_work()
done_work += portion_of_work
Я не буду тут рассказывать про циклы с постусловием, про старый c-шный for и прочие древние вещи, которыми пользуются редко. Но о паре модификаций классического цикла расскажу.
Во многих языках есть штуки типа break, continue и прочих. Итак, ещё одна частая, не слишком удобная ситуация. Пускай, на python.
done_work = 0
something_bad_happened = False
while done_work < 100 and not something_bad_happened:
portion_of_work, something_bad_happened = do_some_work()
done_work += portion_of_work
#Ага, в Python можно написать такое.
#Представим, что у нас тут больше двух строчек
if not something_bad_happened:
portion_of_work, something_bad_happened = do_another_work()
done_work += portion_of_work
if not something_bad_happened:
portion_of_work = do_more_work()
print(«Woo-hoo! We’re done!»)
if something_bad_happened:
print(«Well, almost done…»)
Бывают у нас ситуации, когда мы заранее понимаем, что дальше цикл продолжать смысла нет никакого. Вообще. И вот в таких ситуациях у нас получается не очень удобный код. Для ситуаций вида «мы должны закончить этот цикл прям щас» во многих языках существует оператор break. Он означает «всё, закончили». Цикл прерывается сразу.
done_work = 0
something_bad_happened = False
while done_work < 100:
portion_of_work, something_bad_happened = do_some_work()
done_work += portion_of_work
#Ага, в Python можно написать такое.
#Представим, что у нас тут больше двух строчек
if something_bad_happened:
break
portion_of_work, something_bad_happened = do_another_work()
done_work += portion_of_work
if something_bad_happened:
break
portion_of_work = do_more_work()
print(«Woo-hoo! We’re done!»)
if something_bad_happened:
print(«Well, almost done…»)
Окей, на куске кода размером в десять строк разница не так очевидна, но даже тут видно, что наш код «сплющился». А чем меньше уровней вложенности, тем проще код понимать. Опять таки: сводится к конструкции из циклов и ветвлений и делает программы проще, потому и кочует из языка в язык.
Но если break ещё относительно нечастое явление, то вот следующая штука, о которой я хочу рассказать — ваш самый верный друг и товарищ. И это шаблон «итератор»! Вам он, скорее всего, известен, как цикл foreach (он же цикл for в python).
Вернёмся к этим ребятам.
while (checking_now < numbers.Count)
{
if (numbers[checking_now] > maximum)
maximum = numbers[checking_now];
checking_now += 1;
}
checking_now = 0
maximum = 0
while checking_now < len(numbers):
if numbers[checking_now] > maximum:
maximum = numbers[checking_now]
checking_now += 1
Так вот, 99 процентов использования цикл именно так и выглядят. «Возьми кучу чисел или ещё чего-нибудь, перебери её по одной штучке и сделай с каждой штучкой из кучки что-нибудь». Когда я говорю «99 процентов» я не шучу. Максимум, преувеличиваю. Пусть 97 процентов, окей. Поэтому под это во всех современных языках появился отдельный тип команды. Встречайте тот же самый цикл, но записанный иначе.
var maximum = 0;
foreach (var number in numbers)
{
if (number > maximum)
maximum = number;
}
maximum = 0
for number in numbers:
if number > maximum:
maximum = number
Думаю, теперь видно, что код стал намного проще. Во-первых, исчезло из поля зрения условие. Вам не надо думать, что значит «numbers[checking_now] < numbers.Count». Вы глянули на слово «foreach» и сразу поняли, когда этот цикл кончится. Когда переберём все numbers по одному. Во-вторых, переменная checking_now исчезла из поля зрения. В-третьих, внутри цикла мы работаем с number, не вспоминая о numbers. Работаем с отдельной штучкой без надобности смотреть на всю кучку. number выглядит как-то понятнее, чем numbers[checking_now]. Одним словом, удобненько. И не обязательно речь идёт о числах.
foreach (var potato in potatoes)
{
if (!IsRotten(potato))
ediblePotato.Add(potato);
else
rottenPotato.Add(potato);
}
Когда это превращается в программу, понятную компьютеру, оно подставит вместо нашего красивого foreach/for обычный цикл while. Сводится к нашим трём кирпичам + делает программы понятнее.
Те, кому в этой жизни мало хардкора, могут почитать очень подробно с задротскими деталями о том, как работает этот цикл практически во всех языках, в легендарной книге «Банды четырёх». Книга называется «Приёмы объектно-ориентированного проектирования. Паттерны проектирования». Авторы: Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес. Открываете паттерн «итератор» (шаблон «перечислятор», бережём корни русского языка) , и читаете тот раздел. Но это, повторяю, для тех, кто хочет сломать себе мозг о профессиональные детали.
Вкратце — циклы нам нужны, чтобы повторять какое-то действие много раз. Иногда нам нужно срочно прерваться, и для этого удобно ввести оператор break. И очень-очень часто, нам нужно взять кучу каких-то штук, и с каждой из них что-то сделать. Для этого есть специальный цикл foreach.
И как из этого делать алгоритмы?
Окей, мы можем делать некоторые штуки, выбирать, что мы будем делать дальше, и повторять некоторые штуки. Как из этого собрать инструкцию, то есть алгоритм? Практика, практика и ещё раз практика. Но есть способы ускорить дефлорацию мозга. Некоторые советы, которые помогут вам собрать алгоритм из этих трёх кирпичей с меньшей болью:
Первое — требования.
Задайте себе вопрос: А вы чего хотите добиться? Самые страшные и разрушительные ошибки в программирование — это когда вы не поняли, что нужно получить в итоге. И если у вас очень смутное представление о том, что должно получиться в итоге, то ваши шансы составить понятную инструкцию для ЭВМ — нулевые.
Если вы ещё на курсах, перечитайте внимательно задание. Если у вас на работе задача, перечитайте её в режиме «доебаться до каждой запятой». Если заказ — сношайте мозг заказчику, пока вы оба не поймёте, чем вам надо от этой жизни.
Второе — псевдокод.
Тут легко. Не можешь написать на python, C# или Javascript? Напиши на русском. Не можешь написать на русском? Што ш, смотри пункт первый. Или обрисуй хотя бы в общих чертах, что именно ЭВМ должна делать.
Почему это упрощает дело? В человеческом мозгу всё плохо с оперативной памятью (правило «5+-2» как раз о том), зато всё хорошо с видеокартой. И вещи, которые обрабатываются глазами, уже не занимают место в оперативке. Так что текст перед глазами с вашими мыслями разгружает ваш мозг от этих самых мыслей. Отсюда следующий совет.
Третье — визуализируй.
Если даже текстом не идёт, нарисуй! Что именно? Всё, что поможет как-то выкристаллизовать решение. Блок-схемы, тракты данных, диаграммы, способов слишком много, чтобы дать хоть чуть-чуть деталей. Люди разные, но в норме на рабочем месте программиста тетрадь и ручка имеются как раз для таких зарисовок. Ладно, дам чуть-чуть примеров:
- Блок-схема, где нарисованы все команды и стрелочками показано что за чем выполняется
- «Тракт данных» — можно в общих чертах нарисовать что происходит с данными между «пользователь ввёл» и «пользователю показали результат»
- Тайм-лайн. Чертите вдоль линии, изображающей время, какая часть программы в какой момент что делает.
- Диаграммы взаимодействия. Если ваша программа зачем-то лазает в интернет, в базы данных, в файлик на дисках, можно зарисовать куда и зачем оно лазает.
Четвёртое — разделяй и властвуй.
Помните самый первый пример в этой статье? Где нужно найти самое большое число из введённых пользователем. Так вот, одна из вещей, которые опытный глаз замечает на раз-два — половина программы отвечает за то, чтобы вводить числа, а половина за то, чтобы найти самое большое. Плюс отдельно одной командой вывод самого большого числа на экран. Можно для начала представить наш алгоритм вот так:
Попросить пользователя ввести числа
Выбрать из них самое большое
Вывести его на экран
Что нам это даёт. Мы можем думать над каждой частью по отдельности. Сначала подумаем над тем, как вводить числа, а потом, когда у нас уже есть числа, можем спокойно подумать, как найти самое большое из них.
Конечно, нам нужно продумать как эти части между собой связаны. Нужно где-то про себя отметить, что из первой части мы должны взять набор чисел, чтобы воспользоваться им во второй, а из второй части нам надо где-то сохранить самое большое число, чтобы показать его в конце.
Как делить программы на части? К сожалению, это искусство, которое осваиваешь с опытом. Да, тут есть что посоветовать, но это «есть что» так объёмно, что об этом можно писать отдельный трёхтомник. Если доберёмся до подпрограмм, обязательно обсудим.
Пока что самое простое. Можно делить «сверху вниз» или «от большего к меньшему», когда вы представляете у себя в чертогах разума всю программу целиком и пытаетесь выделить какие-то части, а в этих частях ещё какие-то части. Можно делить «снизу вверх» или «от меньшего к большему», когда вы выделяете что-то, что вам точно понадобится (вы уже знаете, к примеру, что вам надо будет что-то кросиво выводить на экран), а потому из этих маленьких частей пытаетесь собрать всё воедино. И, конечно же, никто не запрещает эти подходы комбинировать.
N.B. Об этом есть немного в «Совершенном коде» Макконела. А целиком об этом есть небольшая книжка Джона Остерхаута «Philosophy of Software Design». Обе рекомендую прочитать сразу же, как только хоть что-то узнаете об объектах.
Пятое — итерируй.
Если вам кажется, что вы делаете говно, не пугайтесь. Вы просто растёте, как профессионал. Это нормально, когда вам хочется что-то переписать, поменять, переразбить. Может, оказалось, что ваши рисунки и диаграммы не соответствуют, программа кривовато написана, или программа вообще должна делать не то, что изначально планировалось. Это обычная ситуация.
Всякий Agile не просто так набрал популярность. Разработка постоянно связана с переделками. Поэтому всё делается небольшими порциями, чтобы вопрос «а не говно ли я делаю?» никого не застал вас врасплох.
Да, всегда надо спрашивать себя «а не говно ли я делаю?». И, само собой, надо всегда быть готовым к ответу «да». Эта работа, к сожалению, требует высокой самооценки.
В следующей серии, если доживём
В этот раз мы начали разбираться с той частью «алгоритмы + структуры данных», которая про «алгоритмы». В следующий раз попробуем чуть-чуть поговорить про «структуры данных». Про самые простые из них, пока что, даже не доходя до массивов. Там есть о чём рассказать.
Ссылки
Канал на ютубе
Паблик вк
Дискорд-сервер
Иллюстрация нарисована этим художником:
Содержание
- Создаем собственное программное обеспечение для Windows
- Способ 1: Программы для написания программ
- Способ 2: Язык программирования и среда разработки
Ежедневно каждый активный пользователь компьютера сталкивается с работой в разных программах. Они призваны облегчить работу за ПК и выполняют определенный ряд функций. Например, калькулятор подсчитывает заданные примеры, в текстовом редакторе вы создаете документы любой сложности, а через плеер просматриваете любимые фильмы или слушаете музыку. Весь этот софт был создан с помощью языков программирования, начиная от основных элементов управления, и заканчивая графическим интерфейсом. Сегодня мы бы хотели обсудить два метода собственноручного написания простых приложений для операционной системы Windows.
Создаем собственное программное обеспечение для Windows
Сейчас разработать свою программу можно и без знания языков программирования, однако для этого существует совсем мало подходящих средств, позволяющих в полной мере реализовать задуманное. К тому же сейчас на просторах интернета бесплатно доступно множество курсов по ЯП, описывающих примеры написания софта с предоставлением исходного кода. Поэтому поставленная задача вполне реализуема, нужно лишь выбрать метод, что мы и предлагаем сделать далее.
Способ 1: Программы для написания программ
Если вы интересовались созданием игр, то знаете о специальных инструментах, куда уже встроено множество компонентов и записаны основные скрипты. Юзеру остается лишь создать из этого цельную картину, систематизируя имеющиеся данные. Примерно по такому же принципу работает и ПО, позволяющее создавать собственные приложения без знания языков программирования. За пример мы взяли HiAsm, поскольку это единственное оптимальное решение с полной локализацией на русский язык.
Скачать HiAsm Studio с официального сайта
- Сразу приступим к рассмотрению простой инструкции по созданию примитивной программы в HiAsm. Для начала перейдите по указанной выше ссылке, чтобы скачать и установить используемый сегодня инструмент.
- После запуска ознакомьтесь с представленной информацией по использованию и решению частых проблем. Сразу хотим отметить, что некоторые антивирусы распознают HiAsm как вредоносный код, блокируя запускающиеся файлы. Поэтому при возникновении неполадок рекомендуем добавить инструмент в исключения или на время выключать защиту операционной системы.
- Через меню «Файл» создайте новый проект.
- Появится новое окно с выбором различных типов приложений. Сегодня мы хотим сконцентрироваться на стандартной программе для Windows с графическим интерфейсом.
- За пример возьмем простое электронное меню с выбором блюд через всплывающий список, а также с возможностью указания количества необходимых порций. Данный выбор был сделан лишь для того, чтобы продемонстрировать работу основных элементов HiAsm. Сначала перейдем к добавлению нового элемента в главное окно, нажав на соответствующую кнопку.
- В открывшемся окне вы увидите, что все объекты распределены по группам, чтобы было удобно выбирать требуемое. Создадим всплывающий список, нажав по нему.
- Переместите элемент на рабочую область, а затем соедините с главным окном.
- Дважды щелкните по списку, чтобы заполнить строки. Каждую новую позицию пишите с новой строки.
- Подтвердите изменения, щелкнув на зеленую галочку.
- Теперь давайте добавим обычный текст, который будет свидетельствовать о названии всплывающего меню.
- Откройте объект и заполните его содержимым.
- Обозначим надпись дополнительной картинкой, выбрав соответствующий элемент из списка.
- Все это тоже нужно будет связать с главным окном.
- HiAsm поддерживает изображения разных размеров и форматов, добавляется оно точно так же, как в случае с текстом.
- Дополнительно присутствует встроенный редактор, позволяющий изменить определенные части картинки.
- Далее через «Вид» вы можете запустить «Редактор формы».
- Он позволит расположить все компоненты в необходимом месте на окне путем перемещения и масштабирования.
- Каждый объект или меню редактируется через окно «Свойства элемента». Запустите его, чтобы увидеть основные параметры, предварительно выбрав одно из меню или окон.
- Здесь вы можете менять основной фон, устанавливать размеры, расположение курсора, положение относительно основного окна и добавить одну из множества точек.
- Окно свойств по умолчанию находится справа. Давайте обратим внимание на редактирование текста. Выберите шрифт, цвет и размер. В разделе «Style» активируется курсив, подчеркивание или выделение жирным.
- Добавим перемещаемый ползунок, чтобы регулировать количество порций.
- В меню «Свойства» потребуется настроить минимальное и максимальное значение отметок, например, от 1 до 6.
- После каждого изменения можете запускать программу, чтобы ознакомиться с результатами и убедиться в отсутствии ошибок.
- По завершении мы предлагаем добавить кнопку «ОК», подтверждающую готовность заказа. Она находится в разделе «Rush-Контролы».
- Задайте кнопке название, например «ОК» или «Подтвердить заказ».
- После завершения добавления двух позиций у нас получилась программа, которую вы видите на скриншоте ниже. Конечно, здесь еще нужно работать с оформлением и другими недостатками функциональности, внешнего вида. Однако этот пример был создан только ради того, чтобы продемонстрировать принцип действия HiAsm.
- Если хотите сделать перерыв или сохранить готовый проект для дальнейшего конвертирования в исполняемый файл, нажмите на кнопку «Сохранить» и выберите место на жестком диске.
Возможностей рассмотренного инструмента хватит не только для того, чтобы создать простое графическое приложение. HiAsm вполне справляется и с гораздо сложными работами, например, созданием проигрывателя или загрузчика файлов из интернета. Конечно, здесь придется приложить намного больше усилий и выучить множество схем и встроенных скриптов. Все это намного проще освоить, если использовать официальные ресурсы, например, форум. Там пользователи не только делятся своими работами, но и объясняют начинающим азы конструирования ПО. Тем более при возникновении вопросов ничего не мешает вам создать отдельную тему, подробно описав сложившуюся трудность.
Перейти на официальный форум HiAsm
Способ 2: Язык программирования и среда разработки
Как уже было сказано ранее, абсолютно все программы пишутся на определенном языке программирования. В некоторых сложных проектах бывает задействовано сразу несколько ЯП. Такой способ написания софта самый сложный, но при освоении одного из языков вы получаете практически безграничные возможности в кодировании программного обеспечения, утилит или отдельных скриптов. Главная задача — определиться с языком программирования. На этот вопрос постарались дать ответ специалисты из известного обучающего сервиса GeekBrains. Всю необходимую информацию вы найдете по указанной ниже ссылке.
5 языков программирования, которые надо учить первыми
Теперь же давайте рассмотрим несколько вариантов обеспечения, написанного при помощи упомянутых в статье ЯП. В первую очередь затронем Python, который некоторые программисты считают самым простым языком. Чтобы на экране появилось простое графическое окно размером на весь экран, придется подключить стандартную библиотеку Tkinter и написать код такого формата:
from tkinter import *
class Paint(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
def main():
root = Tk()
root.geometry("1920x1080+300+300")
app = Paint(root)
root.mainloop()
if __name__ == "__main__":
main()
Далее добавляется код, который вы видите на скриншоте ниже. Он реализует примерно такие же функции, как стандартная программа Paint.
После успешной компиляции запускается графическое окно с уже добавленными кнопками. Каждая из них отвечает за размер кисти и цвет.
Как видите, разобраться в приложениях с GUI (графическим интерфейсом) не так уж и сложно, однако сначала лучше начать с консольных скриптов и небольших программ. Освоить Python вам помогут свободные материалы, уроки и литература, которой сейчас вполне достаточно, чтобы самостоятельно изучить необходимый материал.
В приведенной статье на GeekBrains отдельное внимание уделено и C#, который называют универсальным языком программирования для тех, кто еще не определился, в какой области хочет применять свои навыки. Разработка ПО для Windows ведется в официальной среде от Microsoft под названием Visual Studio. Код внешне выглядит так, как вы видите ниже:
namespace MyWinApp
{
using System;
using System.Windows.Forms;
public class MainForm : Form
{
// запускаем приложение
public static int Main(string[] args)
{
Application.Run(new MainForm());
return 0;
}
}
}
Как видите, существуют определенные различия с тем же Python. Если скопировать этот код, вставить его в IDE и скомпилировать, на экране появится простейшее графическое окно, куда уже в дальнейшем и будут прикрепляться кнопки, блоки и другие объекты.
Мы упомянули о Visual Studio как о среде разработки. Она понадобится в любом случае, если вы хотите писать собственный софт на ЯП, поскольку стандартный блокнот или текстовый редактор для этого практически не подходит. Ознакомиться с лучшими IDE, поддерживающими разные языки, мы советуем в отдельной нашей статье от другого автора далее.
Подробнее: Выбираем среду программирования
В рамках этой статьи мы постарались максимально детально ознакомить вас с процессом написания программного обеспечения с помощью двух доступных методов. Как видите, дело это не совсем простое, ведь нужно получать специальные знания и учить многие аспекты, чтобы освоиться в этом деле. Приведенный выше материал был нацелен лишь на предоставление общей информации для ознакомления и не является полноценным уроком, освоив который, можно стать уверенным программистом. Если вас заинтересовал какой-либо ЯП или HiAsm, потребуется уделить много времени на изучение соответствующих обучающих материалов.
Писать программы — важное умение для каждого. Программы используются в любых целях: повседневные находят себе место в автоматизации ежедневных процессов, бизнес используются для упрощения работы начальства и сотрудников компаний.
Новичков часто интересует вопрос — с чего начать. Ведь задача написать программу представляет собой не простой процесс, к которому нужно отнестись ответственно и потратить на него немало сил.
Определение идеи
Чтобы написать программу, которая работает, нужно хорошо продумать, что она должна делать и как. Для этого следует разобраться с целями, которые она должна решать, а затем разобраться с будущим функционалом. Для этого лучше записать ответы на следующие вопросы:
- Что должна делать написанная программа.
- Чем будет полезна.
- Как может помочь пользователям, чем упростит работу.
- Чем отличается от конкурентов, похожих программ.
- Где можно написать программу.
- На какой платформе написать прогу.
После ответа на эти вопросы должна сформироваться чёткая картинка того, как будет выглядеть продукт и что он будет делать.
Выбор языка программирования
В первую очередь решается, где можно написать программу. Языков огромное множество, и каждый из них индивидуален, отвечает разным запросам пользователей. Какой-то — полегче, другой — сложнее, третий — функциональнее. Среди профессиональных программистов уже давно гуляют разговоры о том, где лучше писать программы, перечисляя преимущества и недостатки каждого из возможных вариантов.
C (Си)
Си — это классика, которую должен знать каждый программист, но подходит он для написания далеко не каждой программы. Как правило, его используют, чтобы написать низкоуровневые программы. Если изучить Си, можно свободно начать писать на Си++.
Новым пользователям, которые хотят заняться написанием одной программы и бросить программирование, Си совсем не подойдёт. Его сложно изучить из-за того, как мало по нему материалов в сети и учебниках, а пользователей, которые пишут на нём — немного, поэтому знатоков в языке ещё нужно поискать. Но если мир программирования затянет пользователей — его изучение рекомендуется.
C++
Один из популярных языков среди программистов. Написать на нём можно всё — от простой программки до сложного продукта со множеством функций. Материалов по изучению языка предостаточно в свободном доступе — в интернете, учебниках по программированию, на форумах многие обсуждают куски кода и рассказывают о том, что придумали. Несмотря на то, что сначала он может показаться сложным, в дальнейшем, когда пользователь научится полностью им управлять, это принесёт немало преимуществ.
Python
Классика, которая навсегда останется любимой среди программистов. Язык — основа, которую изучают как любители, так и профессионалы. Как и Си++, Python подойдёт для того, чтобы писать программы на простом уровне, отвечающие за базовые функции или для более сложных продуктов.
Python, сколько бы ни спорили пользователи интернета, остаётся первым в списке рекомендаций, когда спрашивают: «С какого языка начать программировать». Он — прост в использовании, а обучающих курсов, учебников, материалов — более, чем достаточно, чтобы каждый нашёл то, что поможет ему изучить язык лучше.
Java
Такая же классика, как и Python, рекомендуемая к изучению. Это — улучшенная версия C++, с большим функционалом. С помощью Java происходит написание программ для игр, бизнеса, менее масштабных целей. Запускается на Операционных системах любого типа, что делает его любимым, помогает использовать и проверять везде.
Для каждого понадобится установить специальный текстовый редактор, желательно — вместе с компилятором. В отличие от написания в блокноте, специальные редакторы выделяют функции цветами и выделяют их по уровням, чтобы было удобнее ориентироваться.
Изучение языка
После выбора, на каком языке писать, необходимо потратить время на его обучение. И здесь речь не о паре дней, а о неделях за учебниками и обучающими ресурсами. Для обучения также лучше использовать куски кода от людей, которые делятся ими на форумах. Чем больше пользователь изучит и потратит времени, тем лучше будет понимать принципы работы и сможет реализовать любую идею.
Для изучения могут быть использованы:
- Учебники.
- Курсы.
- Открытые Интернет-ресурсы.
- Форумы для программистов.
Написание программы
После долгого изучения стоит приступить к работе над самим продуктом. Первым делом, стоит написать мини-программу, которая будет показывать функционал, интерфейс продукта, который создатель видит в финале. В дальнейшем эта программа — прототип, изменится ещё не один раз, из-за невозможности реализации некоторых функций.
Для того, чтобы упростить написание, также необходимо использовать немаловажную функцию комментирования. По умолчанию комментарий начинается с символов «//», но может отличаться в зависимости от выбранного языка. Комментарии — строчки, которые не учитываются при компиляции кода, программисты используют их, чтобы отметить, что делает функция или строка. Комментарии упростят работу, когда строчек будет более 500 или 1 000, и поиск чего-то станет сложнее.
Стоит приготовиться к тому, что написание кода — нелёгкое дело. Для него понадобится много нервов, удаления лишних строчек, исправления того, в чём пользователь был уверен с самого начала. Если дело идёт слишком сложно, а принципы программирования — непонятны даже после десяти учебников, стоит обратиться к специалистам, которые знают, что делать. Обращение к профессионалам актуально для тех, кто хочет написать бизнес-программы — иногда для их написания новичкам нужна помощь.
Услуги
Команда разработчиков Cetera Labs следит за последними тенденциями в области веб-разработки, это позволяет создавать качественные пользовательские приложения, которые отвечают бизнес-требованиям наших клиентов и способствуют росту прибыли.
Комплекс услуг по разработке мобильных приложений для iOS, Android и других популярных платформ.
Комплекс услуг по разработке, внедрению и сопровождению программного обеспечения. Реализация ИТ-проектов разного масштаба и сложности.
Создание сайтов
Разработка на Python специалистами компании Cetera Labs позволит масштабировать ваши сайты и программы в любых направлениях. Мы разрабатываем новые модули и функциональные возможности, создаем решения с нуля, а также модернизируем уже действующие разработки.
Технологии
Python — это многоцелевой язык программирования, который используется для написания самостоятельных программ. Это разнообразные приложения, в том числе и для смартфонов, игры для персональных компьютеров.
PHP — один из самых известных языков web-программирования с открытым кодом. Основные его преимущества — простота и многофункциональность.
JavaScript — мультипарадигменный язык программирования. Поддерживает объектно-ориентированный, императивный и функциональный стили. Является реализацией стандарта ECMAScript.
29 апреля 2021
Поделиться в соц. сетях:
К концу 2014 года программистов
было уже более 18 миллионов, но это не сделало профессию менее востребованной. Специалистов много, но вакансий для действительно хороших программистов еще больше.
Неудивительно, что профессия программиста так популярна: она позволяет, не вставая из-за стола, совершенствовать продукты и создавать решения, которыми будут пользоваться миллионы людей. Некоторых останавливает то, что разработчиков уже и так много. Но программисты нужны — особенно те, которые умеют наблюдать, проектировать и находить новые решения проблем.
Бесплатный курс Geekbrains «Основы программирования» нужен тем, кто хочет обучиться этой профессии и получить реальный опыт разработки, но не знает, с чего начать. Воспользовавшись материалами курса, мы составили краткий план того, как создать первую программу.
Что такое программа
Программа — это последовательность команд, которые показывают компьютеру, как решить задачу. Простейшая программа — дать компьютеру три числа, чтобы он произвел с ними операции и показал ответ. Разумеется, компьютер не поймет команд на русском — они должны быть четко прописаны на одном из языков программирования. Но общий смысл ясен: программист дает компьютеру команды и предоставляет необходимые данные.
Для тех, кому нужно найти самый дешевый отель, создали программу Booking. Если нужно написать заметку — Evernote, отредактировать фотографию — Photoshop. Для пользователя программа — это продукт, который должен решить его задачу.
Как это выглядит для компьютера
В обработке программы участвуют три компонента компьютера: процессор (ЦПУ), запоминающее устройство (HDD) и оперативная память (ОЗУ). Процессор обрабатывает и исполняет указанные инструкции, жесткий диск их хранит, а оперативная память служит буфером для процессора: отсюда берутся данные и команды, необходимые процессору для выполнения операций.
Простой пример: пользователю нужно открыть калькулятор и произвести математическую операцию. Пока программа еще не открыта, она хранится на жестком диске. Как только пользователь открывает программу, все инструкции и данные попадают в оперативную память. Процессор начинает выполнять операции, которые указывает пользователь. Во время работы все данные хранятся в оперативной памяти. Когда работа прекращается, программа выгружается из оперативной памяти и переходит «в спячку» на жесткий диск.
Постановка задачи
Чтобы создать программу, нужно четко поставить первоначальную задачу. Для этого нужно сформулировать условия и описать всю входящую и исходящую информацию. Программист сразу понимает, что он даст программе и что хочет получить в ответ.
Возьмем, к примеру, ту программу, которая производит операции с несколькими числами и выводит пользователю ответ. Входящей информацией будут числа, исходящей — результат вычислений, который покажет программа. Для обработки этой информации программист создает наборы инструкций — алгоритмы.
Что такое алгоритмы
Алгоритмы — это прослойка операций между входящими и исходящими данными. По сути, это все то, что будет делать компьютер с имеющейся информацией, чтобы дать пользователю ответ.
Повседневная жизнь также состоит из алгоритмов. К примеру, вы хотите выпить кофе в обеденный перерыв: идете к кофейному автомату, вставляете деньги в купюроприемник, выбираете нужный кофе, подставляете стаканчик и подтверждаете свой выбор. Как и в реальной жизни, в программировании очень важна последовательность и точность исполнения действий: не подставите стаканчик — кофе прольется, не скормите автомату деньги — не получите кофе. Алгоритм — это суть программы.
Языки программирования
В курсе «Основы программирования» от Geekbrains используется язык программирования JavaScript. Во-первых, у него широкая область применения: JavaScript используют в веб-разработке, в разработке офисных и серверных приложений. Во-вторых, он универсален. Для работы с JavaScript не нужно устанавливать среду разработки, то есть систему для написания программного обеспечения — все операции проводятся в браузере.
Начать писать на JavaScript довольно просто. Нужно создать файл с расширением HTML (подойдет любой текстовый редактор, даже «Блокнот») и прописать в нем несколько строчек кода.
На Windows лучше всего использовать программу Notepad++. На OS X ее нет, но есть неплохие аналоги, например Sublime Text или TextMate. Чтобы вывести на экран всем знакомую надпись ‘Hello, World!’, нужно прописать в редакторе следующие строчки:
< script language=»javascript» >
alert (‘Hello, World!’);
< / script >
После этого сохранить файл в формате HTML и открыть. Он откроется в браузере — если все сделано верно, то появится окно с введенным текстом.
Циклы и массивы
Чтобы не повторять одну и ту же команду несколько десятков или сотен раз, используются циклы. Это конструкции, которые автоматически повторяют определенные наборы команд.
В JavaScript существует три основных вида циклов:
- while — выполняет команды, пока условие их выполнения не станет ложным;
- do-while — команды выполняются хотя бы один раз, даже если условие их выполнения ложно;
- for — начальное выражение выполняется один раз, а условия проверяются перед каждой итерацией цикла.
Массив — это набор ячеек для хранения данных одного типа.
Представьте себе супермаркет, при входе в который нужно сдавать сумки. Одна ячейка в камере хранения является переменной, в которую вы положите значение, равное своей сумке. А вот сама камера хранения — набор ячеек — является массивом. Проверим данный пример с точки зрения определения массива. Действительно, набор ячеек упорядочен (у каждой есть свой номер), и в них мы кладем данные одинакового типа (тип «сумка»).
Цитата из методички курса
Пройдя
курс по основам программирования, создав свою первую программу и на практике осознав, насколько вам интересно это направление, можно определяться со специализацией. Разработка приложений для Windows, OS X, разработка мобильных платформ, веб-разработка — каждое из этих направлений требует знания разных языков программирования, о которых подробно рассказывается в одном из последних уроков курса. Таким образом, ваш выбор языка и технологии будет осознанным.
Разработка программ для Windows — по прежнему востребованная классика. Мобильная разработка сейчас на пике популярности, и многие программисты переходят туда, мотивируясь интересными задачами и высокой заработной платой. В любом случае, хорошие программисты нужны во всех направлениях. На сайте Geekbrains можно
ознакомиться со средними зарплатами в отрасли и навыками, которые необходимы работодателям.
Это не полный набор информации, которая нужна для создания первой программы, но после прочтения этой статьи ориентироваться в курсе Geekbrains будет гораздо проще.
Download Article
Download Article
Computer programs are implemented everywhere these days, from our cars to our smartphones, and in almost every job. As the world becomes more and more digital, the need for new programs will always keep increasing. If you have the next big idea, why not make it yourself? See Step 1 below to find out how to get started learning a language, developing your idea into a testable product, and then iterating on it until it’s ready for release.
-
1
Brainstorm ideas. A good program will perform a task that makes life easier for the user. Look at the software that is currently available for the task you want to perform, and see if there are ways that the process could be easier or smoother. A successful program is one that users will find a lot of utility in.
- Examine your daily tasks on your computer. Is there some way that you could automate a portion of those tasks with a program?
- Write down every idea. Even if it seems silly or outlandish at the time, it could change into something useful or even brilliant.
-
2
Examine other programs. What do they do? How could they do it better? What are they missing? Answering these questions can help you come up with ideas for your own take on it.
Advertisement
-
3
Write a design document. This document will outline the features and what you intend to achieve with the project. Referring to the design document during the development process will help keep your project on track and focused. See this guide for details on writing the document. Writing the design document will also help you decide which programming language will work best for your project.
-
4
Start simple. When you are just getting started with computer programming, it will behoove you to start small and grow over time. You will learn a lot more if you set tangible goals that you can reach with a basic program. For example,
Advertisement
-
1
Download a good text editor. Almost all programs are written in text editors and then compiled to run on computers. While you can use programs like Notepad or TextEdit, it is highly recommended that you download a syntax-highlighting editor such as Notepad++ JEdit, or Sublime Text. This will make your code much easier to visually parse.
- Some languages such as Visual Basic include an editor and compiler in one package.
-
2
Learn a programming language.[1]
All programs are created through coding. If you want to create your own programs, you will need to be familiar with at least one programming language. The languages you will need to learn will vary depending on the type of program you want to create. Some of the more useful and important ones include:- C — C is a low-level language that interacts very closely with the computer’s hardware. It is one of the older programming languages that still sees widespread use.
- C++ — The biggest drawback of C is that it is not object-oriented. This is where C++ comes in. C++ is currently the most popular programming language in the world. Programs such as Chrome, Firefox, Photoshop, and many others are all built with C++. It is also a very popular language for creating video games.
- Java — Java is an evolution of the C++ language, and is extremely portable. Most computers, regardless of operating system, can run a Java Virtual Machine, allowing the program to be used nearly universally. It is widely used in video games and business software, and is often recommended as an essential language.
- C# — C# is a Windows-based language and is one of the main languages used when creating Windows programs. It is closely related to Java and C++, and should be easy to learn if you’re already familiar with Java. If you want to make a Windows or Windows Phone program, you’ll want to take a look at this language.
- Objective-C — This is another cousin of the C language that is specifically designed for Apple systems. If you want to make iPhone or iPad apps, this is the language for you.
-
3
Download the compiler or interpreter. For any high-level language such as C++, Java, and many others, you will need a compiler to convert your code into a format that the computer can use. There are a variety of compilers to choose from depending on the language you are using.[2]
- Some languages are interpreted languages, which means they don’t need a compiler. Instead, they only need the language interpreter installed on the computer, and the programs can run instantly. Some examples of interpreted languages include Perl and Python.
-
4
Learn basic programming concepts. No matter which language you pick, you’ll likely need to understand some basic common concepts. Knowing how to handle the syntax of the language will allow you to create much more powerful programs. Common concepts include:
- Declaring variables — Variables are the way your data is temporarily stored in your program. This data can then be stored, modified, manipulated, and called upon later in the program.
- Using conditional statements (if, else, when, etc.) — These are one of the basic functions of programs, and dictate how the logic works. Conditional statements revolve around «true» and «false» statements.
- Using loops (for, goto, do, etc.) — Loops allow you to repeat processes over and over until a command is given to stop.
- Using escape sequences — These commands perform functions such as create new lines, indents, quotes, and more.
- Commenting on code — Comments are essential for remembering what your code does, helping other programmers understand your code, and for temporarily disabling parts of code.
- Understand regular expressions.
-
5
Find some books on the language of your choice.[3]
There are books for every language and for every level of expertise. You can find programming books at your local bookstore or any online retailer. A book can be an invaluable tool as you can keep it close at hand while you’re working.- Beyond books, the internet is an endless treasure-trove of guides and tutorials. Search for guides on the language of your choice on sites such as Codecademy, Code.org, Bento, Udacity, Udemy, Khan Academy, W3Schools, and many more.
-
6
Take some classes. Anyone can teach themselves to make a program if they put their mind to it, but sometimes having a teacher and a classroom environment can be really beneficial. One-on-one time with an expert can greatly decrease the time it takes you to grasp programming fundamentals and concepts. Classes are also a good place to learn advanced math and logic that will be required for more complex programs.
- Classes cost money, so make sure that you are signing up for classes that will help you learn what you want to know.
-
7
Ask questions. The internet is a fantastic way to connect with other developers. If you find yourself stumped on one of your projects, ask for help on sites such as StackOverflow. Make sure that you ask in an intelligent manner and can prove that you have already tried several possible solutions.
Advertisement
-
1
Start writing a basic program with your core functionality. This will be the prototype that shows off the functionality that you’re aiming to achieve. A prototype is a quick program, and should be iterated on until you find a design that works. For example, if you are creating a calendar program, your prototype would be a basic calendar (with correct dates!) and a way to add events to it.
- As you create your prototype, use a top-down approach. Leave out as much detail as you possibly can at first. Then, slowly add finer and finer details. This will speed up the prototyping process and will also keep your code from getting too complex and unmanageable. If your code gets too hard to follow, you could end up having to start all over from the beginning.
- Your prototype will change often during the development cycle as you come up with new ways to tackle problems or think of an idea later that you want to incorporate.
- If you’re making a game, your prototype should be fun! If the prototype isn’t fun, then chances are the full game won’t be fun either.
- If your desired mechanics just aren’t working in the prototype, then it may be time to go back to the drawing board.
-
2
Assemble a team. If you are developing your program on your own, you can use a prototype to help build a team. A team will help you track down bugs faster, iterate features, and design the visual aspects of the program.
- A team is definitely not necessary for small projects, but will cut down development time significantly.
- Running a team is a complex and difficult process, and requires good management skills along with a good structure for the team. See this guide for more details on leading a group.
-
3
Start over from scratch if necessary. Once you’re familiar with your language, you may be able to get prototypes up and running in just a few days. Because of their quick nature, don’t be afraid to scrap your idea and start over from a different angle if you’re not happy with how it’s turning out. It’s much easier to make major changes at this stage than it is later on when the features start falling into place.
-
4
Comment on everything. Use the comment syntax in your programming language to leave notes on all but the most basic lines of code. This will help you remember what you were doing if you have to put the project down for awhile, and will help other developers understand your code. This is especially essential if you are working as part of a programming team.
- You can use comments to temporarily disable parts of your code during testing. Simply enclose the code you want to disable in comment syntax and it won’t be compiled. You can then delete the comment syntax and the code will be restored.
Advertisement
-
1
Gather a testing team. In the alpha stage, the testing team can and should be small. A small group will help you get focused feedback and gives you the ability to interface with testers one on one. Every time you make updates to the prototype, new builds are sent out to the alpha testers. The testers then try all of the included features and also try to break the program, documenting their results.
- If you are developing a commercial product, you will want to make sure that all of your testers sign a Non-Disclosure Agreement (NDA). This will prevent them from telling others about your program, and prevent leaks to press and other users.
- Take some time to come up with a solid testing plan. Make sure that your testers have a way to easily report bugs in the program, as well as easily access new versions of the alpha. GitHub and other code repositories are a great way to easily manage this aspect.
-
2
Test your prototype over and over. Bugs are the bane of every developer. Errors in code and unexpected usage can cause all kinds of problems in a finished product. As you continue to work on your prototype, test it as much as possible. Do everything you can to break it, and then try to keep it from breaking in the future.
- Try inputting odd dates if your program deals with dates. Really old dates or far future dates may cause odd reactions with the program.
- Input the wrong kind of variables. For example, if you have a form that asks for the user’s age, enter in a word instead and see what happens to the program.
- If your program has a graphical interface, click on everything. What happens when you go back to a previous screen, or click buttons in the wrong order?
-
3
Address bugs in order of priority. When revising the program in the alpha, you will be spending a lot of time fixing features that do not work correctly. When organizing your bug reports from your alpha testers, they will need to be sorted based on two metrics: Severity and Priority.
- The Severity of a bug is a measure of how much damage the bug causes. Bugs that crash the program, corrupt data, keep the program from running are referred to as Blockers. Features that don’t work or return incorrect results are labeled Critical, while difficult to use or bad-looking features are labeled Major. There are also Normal, Minor, and Trivial bugs that affect smaller sections or less-crucial features.
- The Priority of a bug determines what order you tackle them when attempting to fix bugs. Fixing bugs in software is a time-consuming process, and takes away from the time you have to add features and polish. As such, you have to take the priority of a bug into account to make sure that you meet deadlines. All Blocker and Critical bugs take the highest priority, sometimes referred to as P1. P2 bugs are usually Major bugs that are scheduled to be fixed, but won’t hold a product back from being shipped. P3 and P4 bugs are usually not scheduled fixes, and fall into the «nice to have» category.
-
4
Add more features. During the alpha phase, you will be adding more features to your program to bring it closer to the program outlined in your design document. The alpha stage is where the prototype evolves into the basic for of the full program. By the end of the alpha stage, your program should have all of its features implemented.
- Don’t stray too far from your original design document. A common problem in software development is «feature-creep», where new ideas keep getting added, causing the original focus to be lost and spreading development time between too many different features. You want your program to be the best at what it does, not a jack of all trades.
-
5
Test each feature as you add it. As you add features to your program during the alpha phase, send out the new build to your testers. The regularity of new builds will be entirely dependent on your team’s size and how much progress you’re making on the features.
-
6
Lock your features when the alpha is finished. Once you’ve implemented all of the features and functionality in your program, you can move out of the alpha phase. At this point, no further features should be added, and the included features should essentially work. Now you can move onto wider testing and polish, known as the beta phase.
Advertisement
-
1
Increase your testing group size. In the beta phase, the program is made available to a much larger group of testers. Some developers make the beta phase public, which is referred to as an open beta. This allows anyone to sign up and participate in testing the product.
- Depending on the needs of your product, you may or may not want to do an open beta.
-
2
Test connectivity. As programs become more and more interconnected, there’s a good chance that your program will rely on connections to other products or connections to servers. Beta testing allows you to ensure that these connections work under a larger load, which will ensure that your program is usable by the public when it releases.
-
3
Polish your software. In the beta phase, no more features are being added, so focus can be turned to improving the program’s aesthetics and usability. In this phase, UI design becomes a priority, ensuring that the users will have no difficulty navigating the program and taking advantage of the features.
- UI design and functionality can be very difficult and complex. People make whole careers out of designing UIs. Just make sure that your personal project is easy to use and easy on the eyes. A professional UI may not be possible without a budget and a team.
- If you have the budget, there are lots of freelance graphics designers who could potentially design a UI on contract for you. If you have a solid project that you’re hoping will become the next big thing, find a good UI designer and make them part of your team.
-
4
Continue bug hunting. Throughout the beta phase, you should still be cataloging and prioritizing bug reports from your user base. Since more testers will have access to the product, chances are new bugs will be discovered. Eliminate bugs based on their priority, keeping your final deadlines in mind.[4]
Advertisement
-
1
Market your program. If you want to get users, you’ll want to make sure that they know your program exists. Just like any product, you’ll need to do a bit of advertising in order to make people aware. The extent and depth of your marketing campaign will be dictated by your program’s function as well as your available budget. Some easy ways to raise awareness of you program include:
- Posting about your program on related message boards. Make sure that you follow the posting rules of whichever forum you choose so that your posts don’t get marked as spam.
- Send out press releases to tech sites. Find some tech blogs and sites that fit your program’s genre. Send the editors a press release detailing your program and what it does. Include a few screenshots.
- Make some YouTube videos. If your program is designed to complete a specific task, make some YouTube videos showing your program in action. Structure them as «How-To» videos.
- Create social media pages. You can create free Facebook and Google+ pages for your program, and can use Twitter for both company and program-specific news.
-
2
Host your program on your website. For small programs, you can most likely host the file on your own website. You may want to include a payment system if you are going to be charging for your software. If your program becomes very popular, you may need to host the file on a server that can handle more downloads.
-
3
Set up a support service. Once your program is released in the wild, you will invariably have users with technical problems or who don’t understand how the program works. Your website should have thorough documentation available, as well as some sort of support service. This can include a technical support forum, a support email, live help, or any combination of those. What you can provide will be dependent on your available budget.
-
4
Keep your product up to date. Almost all programs these days are patched and updated long after their initial release. These patches may fix critical or non-critical bugs, update security protocols, improve stability, or even add functionality or redo the aesthetics. Keeping your program updated will help keep in competitive.
Advertisement
Sample Programs
Add New Question
-
Question
What should I do if my kid wants to make a website?
Go to any reliable coding site. It should take you through on how to make a website, and if your kid already knows how, then just skip the tutorial. If he wants to make one from scratch, use commands to create a blank website or buy a domain. Just be sure to monitor your kid’s website to make sure they aren’t putting up any personal information.
-
Question
Where can I find a video tutorial?
Check YouTube. There are many informative video tutorials on this and other topics.
-
Question
How do I create an app icon?
I suggest you find how-to videos on YouTube on how to paint/develop app icons. Or, if you don’t want to do that you can always hire an artist.
See more answers
Ask a Question
200 characters left
Include your email address to get a message when this question is answered.
Submit
Advertisement
References
- ↑ Stephen Cognetta, MBA. Tech Interviewing Coach. Expert Interview. 21 July 2020.
- ↑ http://www.computerhope.com/issues/ch000675.htm
- ↑ Stephen Cognetta, MBA. Tech Interviewing Coach. Expert Interview. 21 July 2020.
- ↑ http://www.centercode.com/blog/2011/01/alpha-vs-beta-testing/
About This Article
Article SummaryX
1. Come up with an idea.
2. Learn a programming language.
3. Build a prototype.
4. Assemble a team.
5. Comment on everything.
6. Test the Alpha prototype.
7. Create and test the Beta.
8. Polish and release.
Did this summary help you?
Thanks to all authors for creating a page that has been read 439,805 times.
Reader Success Stories
-
«This article really helped give me a solid idea on how to create my own program for the future. Thanks a lot!»