Загрузить PDF
Загрузить PDF
Итак, у вас появилась идея для отличной программы, однако вы и понятия не имеете, как ее реализовать? Не беда, поможем. Правда, придется потратить немало времени на то, чтобы выучить язык программирования, но это нормально. Скажем даже более, многие успешные программисты — самоучки. Выучив основы, вы сможете создавать простые программы, тратя на это минимум времени. Создание более сложных программ, конечно, является более серьезной задачей, но, как говорится, терпение и труд все перетрут!
-
1
Определитесь с тем, какой язык программирования вы выучите первым. Если раньше вы не программировали, то начинать надо с чего-то простого, рассчитанного на новичков — тем не менее позволяющего добиться поставленных целей. Есть десятки языков программирования, у каждого из них свои области применения, свои задачи и особенности. Вот несколько из них:[1]
- C — один из самых старых языков программирования. Знакомство с С позволит упростить изучение C++ и Java.
- C++ — один из самых популярных языков программирования в наши дни, особенно в плане разработки программного обеспечения. Правда, на то, чтобы выучить С++, уйдет время, а на то, чтобы еще и научиться им пользоваться, уйдет еще больше… Но это окупит себя!
- Java — еще один очень популярный язык программирования, который может работать почти что в любой операционной системе.
- Python — один из простейших языков программирования, чьи основы можно выучить за пару дней. Тем не менее это весьма мощный язык, задействованный для создания множества серверных и веб-приложений.
-
2
Подготовьте среду разработки. Чтобы начать программировать, вам нужно не так уж и много — и это «среда разработки». Впрочем, что именно под этим понимается, зависит от выбранного языка программирования.
- Редактор кода — почти что любому программисту будет удобнее работать в специальном текстовом редакторе — редакторе кода. Можно, конечно, и в «Блокноте» работать, но без подсветки синтаксиса и подстановок это будет весьма печальный опыт. Среди популярных редакторов кода можно назвать Notepad++, TextMate и JEdit.
- Компилятор — при работе со многими языками программирования (С, Java и так далее) код программы сначала надо «собрать» — скомпилировать, только потом его можно будет запустить. Соответственно, придется установить компилятор, если в выбранном вами языке программирования без него не обойтись. К слову, большинство компиляторов поможет вам отлавливать «баги» — ошибки программы.
- IDE (Integrated Development Environment, интегрированная среда разработки) — в некоторых языка программирования и редактор кода, и компилятор, и модуль отладки — все объединено в одну-единственную интегрированную среду разработки. Скачать IDE можно, как правило, с сайта языка программирования.
-
3
Почитайте учебники. Если раньше вы не программировали вообще, то начинать надо с малого. Так, стоит найти учебники или курсы, хотя бы онлайн-курсы, в которых даны основы основ выбранного языка, рассказано про его синтаксис, переменные, функции и все остальное, а также про то, как это все между собой связано.
- Заинтересовались? Зайдите на Udemy, Khan Academy, Codecademy, Code.org и другие аналогичные ресурсы.[2]
- Заинтересовались? Зайдите на Udemy, Khan Academy, Codecademy, Code.org и другие аналогичные ресурсы.[2]
-
4
Загрузите образцы и программы с открытым кодом. Вам будет куда проще учиться на примере, работая с образцами, благо что их в сети доступно предостаточно. Начните с простых программ, которые хоть как-то относятся к той программе, которую вы хотите сделать.
-
5
Чтобы выучить основы, создавайте простые программы. Раз уж вы начали писать код сами, то начните с азов. Напишите несколько программ, скажем, на вывод строки или подсчет простенького уравнения. Отрабатывайте все это — пригодится позже, во время работы над более сложными программами. Экспериментируйте, старайтесь сломать даже собственные программы.
-
6
Присоединитесь к сообществам программистов. Возможность задать вопросы состоявшемуся программисту — бесценна. На сайтах, где собираются программисты, вы найдете множество единомышленников, причем вне зависимости от того, на каком языке вы пишете. Не бойтесь спрашивать, но никогда не просите помощи, не испробовав перед этим все доступные вам средства.
-
7
Не забывайте, что на изучение языка программирования уходит много времени. Вы не сумеете написать программу (сложную), когда впервые сядете за компьютер с учебником программирования. Впрочем, чем больше вы будете учиться и практиковаться, тем лучше будете программировать.[3]
Реклама
-
1
Подготовьте «дизайн-документ». Дизайн-документ — это детальное описание разрабатываемой программы, и именно его необходимо сделать первым делом, чтобы потом, уже по ходу работы, вы могли сверяться с ним и заложенными в нем целями. Именно дизайн-документ позволит вам сделать то, что вы хотели, а не что-либо иное.
- Все, что вы хотите реализовать в программе, должно быть перечислено на страницах дизайн-документа.
- Кроме того, дизайн-документ должен учитывать и пользователя, точнее то, как он будет работать с программой.
-
2
Сделайте блок-схему вашей программы. Это будет своего рода карта, показывающая, как пользователь будет переходить от одной части программы к другой. На этом этапе ничего сложнее простой блок-схемы вам не нужно.
-
3
Определитесь с архитектурой программы. Цели будут определять средство… то есть архитектуру. Если знать и понимать, каким задачам какая архитектура соответствует, то процесс разработки пойдет куда эффективнее.[4]
-
4
Начните с программы по схеме «1-2-3». Это простейший тип программ, их задача — позволить вам адаптироваться к языку программирования. Если в общем, то программы «1-2-3» запускают, спрашивают у пользователя какие-нибудь данные, затем выводят результат, на чем и заканчиваются.
- Следующим шагом в схеме «1-2-3» будет так называемый REPL (Read-Execute-Print Loop). Проще говоря, это возврат к первому шагу программы после вывода результата вычислений.
- Подумайте о программах типа Pipeline. Они характеризуются тем, что трансформируют вводимые пользователем данные и работают последовательно. Данный тип подходит для программ, которые требуют минимум взаимодействия с пользователем — скажем, RSS-ридеры. Такая программа будет представлять собой несколько классов с общим циклом.
Реклама
-
1
Сделайте акцент на какой-то одной функции программы. Точнее сказать, прототип — это всегда основная функция программы. Допустим, вы создаете программу-органайзер — тогда основной функцией будет календарь и возможность добавлять события.
-
2
Добейтесь того, чтобы прототип работал без сбоев. Прототип должен быть таким, чтобы им можно было пользоваться вместо разрабатываемой программы. Прототип станет основой, фундаментом всему, так что работать он должен соответственно. Иными словами, каждая функция прототипа должна работать безукоризненно.
- В прототип можно вносить срочные изменения и тестировать их.
- Разумеется, задача тестирования прототипа требует участия сразу многих людей.
- Прототип может и будет меняться, это факт.
-
3
Не бойтесь перерабатывать прототип снова и снова. В этом его суть — сначала эксперименты, потом релиз. Именно на примере прототипа вы сможете увидеть, все ли работает так, как надо. Если же прототип оказывается неудачным — не беда, просто перепишите его с нуля, начните все заново. Лучше так, поверьте.
Реклама
-
1
Создайте базу псевдокода. Это станет своего рода скелетом вашего проекта и основой для будущей работы. Псевдокод отличается от обычного кода тем, что… не «компилится» (не обрабатывается в компиляторе), зато прекрасно читается программистами и помогает понять, что должно происходить на том или ином шаге работы программы.
- Псевдокод, впрочем, использует тот же синтаксис, что и обычный код, поэтому писать псевдокод надо так же, как и программу.
-
2
Усовершенствуйте прототип. Можете взять сам прототип, можете взять псевдокод — в любом случае суть в том, чтобы сделать прототип лучше, совершеннее, быстрее!
-
3
Начните работу над кодом программы. Вот, собственно, мы и добрались до сути. Именно работа над кодом программы и займет бо́льшую часть времени, не говоря уже про бесчисленные компиляции, не менее бесчисленные тесты и поиски багов… Если над вашей программой работает целая команда, то стоит начать с псевдокода, чтобы все шло равномерно.
-
4
Не забывайте комментировать код. Описывайте функции и особенности, которые вы реализуете в коде. Это нужно не только для того, чтобы кто-то другой, открыв ваши исходники, сумел разобраться, что к чему, но и для того, чтобы вы сами не запутались в собственном коде, если вернетесь к нему, скажем, через год.
Реклама
-
1
Тестируйте весь новый функционал. Все, что вы добавили в программу, должно быть протестировано, оттестировано и перетестировано. И чем больше людей приложат к этому руку, тем лучше, тем больше ошибок можно будет найти. Тестеры, разумеется, должны знать, что работают с далеко не финальной версией, а потому возможны ошибки.
- Этот этап работы над программой часто называют «альфа-тестированием».
-
2
Протестируйте финальную версию программы. Итак, все функции, какие только должно были быть в программе, в нее добавлены. Что теперь? Теперь снова тесты. Долгие, придирчивые, тщательные тесты — и работа над ошибками, разумеется. Сейчас вашу программу должно тестировать даже большее количество человек, чем ранее.
- Часто данный процесс называют бета-тестированием.
-
3
Протестируйте релиз-версию. Продолжая вносить в программу исправления и дополнительные материалы, не забывайте все тестировать.
Реклама
-
1
Подумайте, что вам нужно. Это будет зависеть от программы, так что подумайте, нужны ли вам, скажем, аудиозаписи? Графика? Контент? Задумайтесь об этом до релиза.
-
2
Подумайте, не стоит ли отдать все это на аутсорсинг. Если вам нужно много всего, но вы или никто в вашей команде не умеет рисовать или заниматься звукозаписью, то стоит вспомнить про аутсорсинге. Вы без проблем найдете фрилансеров, которые смогут подготовить для вас все необходимое.
-
3
Добавьте в программу все необходимые дополнительные материалы. Опять же, они не должны портить функционал программы. Добавление дополнительных материалов знаменует собой начало финального этапа работы над программой, если только, конечно, дополнительные материалы не являются неотъемлемой и внутренней частью самой программы (как, скажем, бывает при создании видеоигр).
Реклама
-
1
Подумайте, не стоит ли выпустить вашу программу под лицензией открытого кода. Тогда и другие люди смогут получить доступ к исходному коду программы, вносить в него изменения и улучшения. Правда, по такой лицензии вы вряд ли получите доход от программы — вы же не сможете ее продавать, код-то открытый. В чем же резон? В помощи сообщества, которое, если заинтересуется вашей программой, может превратить ее в истинный шедевр.
-
2
Подготовьтесь к продажам вашей программы. Для этого вам нужен интернет-магазин типа «витрина», чтобы покупатели могли, заплатив, скачать программу и начать ею пользоваться. Учтите, впрочем, что программы, за которые платят деньги, должны работать идеально!
- В зависимости от того, что у вас за программа, вы можете продавать еще множество услуг.
-
3
Продолжайте поддерживать выпущенную программу обновлениями. Скорее всего, после релиза вы увидите поток сообщений о всевозможных ошибках и багах. Это нормально. Вам нужно ранжировать эти сообщения по степени важности и начать решать соответствующие проблемы, а затем выпускать обновления для программы — так называемые «патчи».
- Хотите не растерять покупателей и стяжать себе добрую славу? Выпускайте патчи почаще.
-
4
Займитесь рекламой вашей программы. Если о ней никто не будет знать, то никто ей и пользоваться не будет. Отправляйте сообщения на тематические сайты, раздавайте бесплатную пробную версию, напишите пресс-релиз, делайте все необходимое, чтобы о вашей программе узнали!
Реклама
Об этой статье
Эту страницу просматривали 118 791 раз.
Была ли эта статья полезной?
Первый опыт написания полноценной программы
Время на прочтение
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.
Как программисты пишут программы?
Автор:
04 апреля 2015 16:18
Многие считают это ремесло непонятным настолько, что нет никаких шансов разобраться в принципах даже теоретически.
Попытаюсь объяснить как это происходит, что называется, на пальцах.
Для написания программ используются языки программирования, которые разделяют на низкоуровневые, высокоуровневые и сверхвысокоуровневые, а какой из них какой и чем отличается станет ясно чуть позже. Но забегая вперед добавлю, что каждый язык создан для определенных задач и не всегда одну и ту же задачу можно реализовать на разных языках.
Для понятности, буду приводить примеры на бытовых приборах и задачах, с которыми мы сталкиваемся каждый день.
Итак, задача — нарезать хлеб к обеду. Для человека простейшая задача — чего его там резать-то, взял и нарезал, правда?
Самый главный навык программиста, без которого ничего не получится — умение разделять задачу на последовательность действий. Чем ниже уровень языка программирования, тем более детально нужно описывать эту последовательность.
Приведу пример, как выглядела бы программа по нарезке хлеба для нашего тела
Задача «нарезать хлеба» на языке программирования высокого уровня
__1.Открыть правой рукой хлебницу;
__2.Взять булку хлеба правой рукой;
__3.Положить хлеб на разделочную доску; (предположим, что доска уже лежала на столе)
__4.Открыть правой рукой верхний ящик стола;
__5.Найти блестящий нож, длиной 20 см, с черной ручкой;
__6.Взять нож в правую руку;
__7.Поднести нож к хлебу;
__8.Зафиксировать хлеб левой рукой, взявшись за левый край булки;
__9.Расположить нож строго над правым ребром булки хлеба;
__10.Повторять следующие действия 5 раз:
____10.1.Отступить влево на сантиметр;
____10.2.Повторять следующие действия, пока лезвие ножа не не коснется доски:
________10.2.1.Прижать нож к хлебу;
________10.2.2.Совершить ножом возвратно поступательное движение вперед-назад;
____10.3.Поднять нож вверх;
__11.Положить нож в ящик;
__12.Отпустить левой рукой хлеб.
//
Все, программа по нарезке хлеба в количестве пяти кусков готова, можно ее продолжить, описав стирание крошек со стола, укладывания нарезанных кусочков на тарелочку и т.д.
Отладка программы
Запускаем программу и смотрим, как она работает:
Ой… вместе с пятым куском и палец отрезал…
чёрт! остановить программу!
Я же не написал как именно нужно зафиксировать хлеб левой рукой, схватился как попало и большой палец торчал в сторону…
Возвращаемся к строчке «Зафиксировать хлеб левой рукой, взявшись за левый край булки;»
После нее пишем:
«Поджать большой палец левой руки влево, к ладони;»
Запускаем программу
Ой… на строчке «Положить нож в ящик;» нож упал на пол…
Проклятье! оказывается, стол стоит немного под наклоном и ящик сам закрылся…
Возвращаемся к коду и перед строчкой «Положить нож в ящик;» пишем «Открыть правой рукой верхний ящик стола;»
Заметили ошибку? Нет?!
Как мы можем открыть ящик правой рукой, если в этой руке нож? Значит, сначала нужно положить нож на стол, потом открыть ящик, снова взять нож и т.д.
И делаем мы это до тех пор, пока хлеб не будет нарезан как следует, без повреждения мебели и пальцев.
Вот, примерно так происходит отладка
С опытом начинаешь писать программы, которые работают с первого раза, допуская минимум ошибок, а проверка «открыт ли ящик», перед складыванием в него чего-то, входит в привычку.
Когда какие-то операции совершаются постоянно, такие как нарезка хлеба, мойка посуды и т.д., то программисты их описывают в виде процедур.
Процедура — набор определенных действий, спрятанный под одной командой.
Таким образом, текст программы, который я приводил выше, можно поместить в процедуру под названием НарезатьХлеба(параметр), где в качестве параметра будем указывать количество кусков
в результате, программа с использованием процедур будет выглядеть так:
__ЗайтиНаКухню();
__НарезатьХлеба(5);
__ПоставитьХлебНаСтол();
__ПомытьПосуду();
и нет предела совершенству
Теперь о языке низкого уровня
на нем пришлось бы описывать эту задачу еще более детально, вплоть до того, какими пальцами и с каким усилием нужно держать нож, что «открыть ящик» — это совершить последовательность действий все той же рукой с использованием кисти, пальцев, мышц предплечья, усилий в килограммах на сантиметр и т.д. Пришлось бы даже описать что такое правая рука, где она находится и не забыть проверить есть ли она вообще в наличии…
Но когда-то, не было и низкоуровневых языков программирования и его писали на машинных кодах, т.е. программа выглядела в виде последовательностей единиц и нулей, это были темные времена.
Стоит немного рассказать что такое высокоуровневый язык и зачем нужен низкоуровневый, если проще писать на высокоуровневом?
Высокоуровневый язык был написан на низкоуровневом, в него были заложены команды, в виде процедур, подразумевающие последовательность действий, таких как «открыть ящик», «взять нож в руку» и т.д. но если по какой-то причине потребуется взять нож только двумя пальцами, потому что ручка сломана или отсутствует, например, то сделать этого не удастся, ибо команда «взять нож в руку» подразумевает использование всех пяти пальцев. Для таких ситуаций в высокоуровневых языках есть возможность делать вставки кода на низкоуровневом языке и вместо стандартной команды «взять нож в руку» пишется код на низком уровне под нож со сломанной ручкой.
Человек все эти операции делает не задумываясь, но машина так не умеет, ей нужно подробно объяснить что, как и в какой последовательности.
Сверхвысокоуровневые языки являются узкоориентированными на определенные задачи, например, для работы на кухне, они включают набор специальных команд и код на них выглядел бы примерно, как программа с использованием процедур, что описана выше.
Вы наверняка сталкивались с тем, что какие-то программы работают только под Windows, например, и их нет под Android или наоборот, хотя функции, казалось бы, обычные, и почему на телефон с Windows Phone нельзя установить Android?
Объясню на примере все той же программы для кухни: в тексте программы сказано «Найти блестящий нож, длиной 20 см, с черной ручкой в верхнем ящике стола», например, это для Windows. Однако, в андройде нет верхнего ящика стола, ножи там хранятся в настенном шкафу, т.е. процедура открытия ящика должна быть заменена на процедуру открытия шкафа, согласитесь — они разные! Но и нож там лежит длиной не 20 см, а в 25, он вовсе не блестящий и ручка у него не черная, а синяя. Поэтому, чтобы нарезать хлеба, нужно существенно переписать программу, хотя результат будет такой же. Для этого существуют кросплатформенные программы, которые могут работать под разными системами, т.е. на разных кухнях, ибо программисты предусмотрели оба варианта. Это, конечно, замечательно, но у них есть и минусы: если у вас всегда используется только кухня с ящиками в столах, то зачем вам код, который умеет работать со шкафами? А место он занимает. Это все равно что купить микроволновку, у которой в комплекте идут две дверки, одна предназначена для открывания влево, а другая вправо и еще у этой печки есть ниша, в которую можно положить ненужную дверку, но из-за этой ниши микроволновка выше на 10 мс. Вы поставите нужную дверку, а ниша будет занимать место.
Почему андройд нельзя заменить на виндовс или наоборот?
Ну, на самом деле можно, но на примере той же кухни это будет выглядеть так: выносите одни шкафы, которые по размеру идеально вписывались в помещение и заносите другие, они шире и не вмещаются, придется отпиливать, раковина не слева, а справа — не хватает труб, надо как-то наращивать, розетки слишком низко, столы их перекрывают, придется долбить стены, чтобы перенести и т.д.
Почему у программистов обычно неопрятный вид и они будто не от мира сего?
Ну, во-первых, далеко не все такие, а во-вторых, они часто обдумывают код, даже двигаясь в плотном потоке машин или прогуливаясь с девушкой под ручку. Она рассказывает ему какую-то историю, а у него мелькают мысли, он раскладывает операцию на последовательность действий, подбирая наилучший вариант. Поверьте, это бывает увлекательнее, чем читать самую интересную книгу. И именно поэтому они могут не спать сутками, пока пребывают в этом состоянии. И именно в этом состоянии они могут выглядеть ненадлежащим образом Это состояние называют «прет». Но бывает и непруха, когда делаешь-делаешь, а каменный цветок так и не выходит, в этом случае нужно все бросить и отвлечься.
но говорят, что бывает и такое
Заключение
А теперь представьте, насколько сложен наш мир глазами программиста.
Искусственный интеллект — это программа, способная к самосовершенствованию, которая, отрезав палец, должна понять, что что-то пошло не так, пойти в код и исправить ошибку! Возможно ли это?
Надеюсь, у вас хватило терпения дочитать это до конца и кое-что стало более понятным.
//конец
Ссылки по теме:
#Руководства
- 1 июн 2020
-
16
Разбираемся, как устроен язык программирования C++, что такое программы и как научиться их писать.
vlada_maestro / shutterstock
Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.
Чтобы научиться программировать с нуля, нужно только уметь пользоваться компьютером, устанавливать программы, создавать папки и файлы. Это первая статья из серии «Глубокое погружение в C++», с помощью которой вы сделаете первые шаги в профессии разработчика серверных приложений и игр.
Не пугайтесь большого объёма информации: чем больше вы будете знать, тем лучше сможете программировать. Это особенно важно, если вы выбрали C++, потому что на этом языке невозможно без хорошей теоретической базы написать высокопроизводительный код.
Внимание! В следующих разделах информация сильно упрощена.
Компьютер — это бесполезный кусок железа, который ни с чем не может справиться самостоятельно. И чтобы получить какой-то результат, нужно написать для него программу — подробный набор инструкций.
Компьютер понимает только машинный код — специальный язык, который очень сложно изучить. Вот как выглядит вывод на экран надписи «Hello, World!» на машинном коде (в шестнадцатеричном представлении):
BB 11 01 B9 0D 00 B4 0E 8A 07 43 CD 10 E2 F9 CD 20 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21
Чтобы упростить разработку, были созданы языки программирования — с их помощью пишут инструкции для компьютера, которые понятны и человеку. Одним из первых был язык ассемблера. Вот как на нём выглядит вывод надписи «Hello, World!»:
Всё равно достаточно сложно, да? В результате человечество создало более понятные языки программирования, на которых гораздо быстрее писать программы. А чтобы они потом запускались, код переводится в машинный или какой-нибудь промежуточный язык — этот процесс называется компиляцией.
Если язык похож на машинный код, то его называют низкоуровневым. Если же он больше понятен человеку, то — высокоуровневым. C++ сочетает в себе свойства и того, и другого.
Любая программа работает с данными: она их получает, обрабатывает, а потом возвращает результат обработки. Данные могут быть переданы пользователем, считаны из файла или записаны в самом коде.
Например, браузер получает текст из адресной строки, который ввёл пользователь, отправляет адрес на сервер, а потом выводит ответ в виде страницы.
Также программа может состоять из других подпрограмм — наборов инструкций. Обработка запроса пользователя, отправка данных на сервер, получение ответа, вывод страницы — всё это подпрограммы.
Вот пример логики такой подпрограммы:
Можно вернуть данные пользователю, записать их в файл или передать другой подпрограмме. Вот ещё один пример использования программы:
Эта команда запускает программу в ОС Linux, которая конвертирует изображение img.jpg в другой формат, а потом сохраняет в файл img.png.
Сейчас слово «подпрограмма» встречается редко — вместо него используют слова «функция», «процедура» или «метод».
По традиции программистов первая программа, написанная на изучаемом языке, должна выводить на экран надпись «Hello, World!».
В C++ такой код будет выглядеть так:
#include <iostream>
int main()
{
std::cout << "Hello, World! n";
}
Попробуем его запустить, а потом разберём, как он работает.
Самый простой вариант — зайти на сайт repl.it. На главной странице нажмите Start Coding, выберите C++ и нажмите Create Repl.
У вас откроется следующая страница:
Слева — менеджер файлов, в центре — текстовый редактор, где уже введён нужный нам код, а справа — консоль, в которой выводится результат. Чтобы запустить программу, нажмите Run.
Если же вы хотите компилировать код на своём компьютере, то установите компилятор. Я пользуюсь G++, его и вам рекомендую.
- Установщик для Windows.
- Название пакета для Linux: gcc.
После установки компилятора создайте отдельную папку для кода, а в ней — файл hello.cpp (это расширение для файлов с командами на C++). Желательно, чтобы путь к папке состоял из латинских символов и был написан без пробелов.
Откройте hello.cpp с помощью любого блокнота или редактора кода (например, Sublime text или VS Code) и вставьте в него код, указанный выше. Теперь откройте терминал с помощью инструкции ниже.
Windows | Linux |
---|---|
1. Нажмите Win + R, введите cmd и нажмите Enter. | 1. Нажмите Ctrl + Alt + t. Если не помогло, то подходящий способ можно найти в этой статье. |
2. Введите команду cd [путь]. Например, cd projectscpp1, если ваша папка находится по адресу c:projectscpp1. | 2. Введите команду cd [путь]. Например: cd ~/projects/cpp1 |
3. Если папка находится не на системном диске, то команду нужно изменить: cd /D [диск:][путь]. Например: cd /D d:projectscpp1 |
Затем введите следующую команду:
Эта команда скажет компьютеру, что нужно скомпилировать код из файла hello.cpp и сохранить результат в файл hello (или hello.exe в Windows).
После этого запустите скомпилированную программу, и вы увидите, что всё работает:
Теперь, когда мы смогли запустить программу, разберёмся в ней.
Начнём с самой первой строчки:
С помощью языка программирования можно:
- писать условия;
- работать с памятью;
- создавать подпрограммы;
- работать с классами, структурами и объектами;
- выполнять базовые математические операции и так далее.
Но чтобы получить больше возможностей, программе нужно как-то взаимодействовать с операционной системой. Писать код, который будет отправлять команды ОС, достаточно сложно, но нам и не придётся — всё уже написано другими разработчиками и помещено в специальную библиотеку.
Одна из таких библиотек, iostream, позволяет запрашивать пользовательский ввод или выводить что-то в консоли.
Есть и другие библиотеки, которые помогают работать с графикой, отправлять запросы через интернет, воспроизводить звук и так далее. В будущем вы научитесь самостоятельно писать свои собственные библиотеки.
Вернёмся к коду:
main () — это подпрограмма (функция), с которой начинается выполнение любой программы на C++. Её также называют точкой входа.
Подробнее подпрограммы мы разберём в следующих статьях. Сейчас нужно знать только то, что все команды записывают в тело функции.
Настало время понять, как работают команды:
Команда cout говорит компьютеру о том, что нужно вывести определённый текст в консоли. В нашем случае — Hello, World!. Любой текст должен быть в кавычках, иначе компилятор воспримет его как идентификатор, то есть имя команды, функции, переменной и так далее. Поэкспериментируйте с текстом, запустите программу и посмотрите, что изменится.
После каждой команды должна стоять точка с запятой — она говорит компилятору, что это конец инструкции и нужно переходить к следующей.
Пространства имён (например, std) относятся к библиотекам, и их мы рассмотрим в следующих статьях.
Изучая C++, подготовьтесь к большому объёму информации. В следующий раз мы также подробно разберём ввод и хранение информации.
Учись бесплатно:
вебинары по программированию, маркетингу и дизайну.
Участвовать
Научитесь: Профессия Разработчик на C++
Узнать больше
Разработка программного обеспечения интересна как программистам, так и тем, кто таковыми хочет стать. В статье затронуты концепции, необходимые для старта.
Статья разделена на 4 части. Обратите внимание, что важные слова или словосочетания, введенные в этой серии, выделены жирным шрифтом. В конце каждого из четырех разделов будет приведена короткая викторина, проверяющая знания и подробно объясняющая некоторые моменты.
Часть 1 – Что такое программирование?
Самый простой и точный вариант ответа: «Программирование – это акт инструктирования компьютеров для выполнения задач». Еще его называют разработкой или кодингом.
Итак, что такое компьютерная программа? ПО представляет собой последовательность инструкций, выполняемых ПК. Компьютер же – это любое устройство, способное обрабатывать код. Сюда относятся стационарные ПК, ноутбуки, планшеты, банкоматы, Raspberry Pi, серверы etc.
Разработка программного обеспечения и аналогия
Во-первых, примеры программирования есть даже в повседневной жизни. Вселенная довольно предсказуема: день и ночь, времена года, восход и закат. Люди проходят через такие этапы, как встреча нового дня, посещение школы, университета или работа. Мы получаем инструкции от начальников и учителей. Также существуют рецепты, следуя которым можно приготовить блюдо.
Во-вторых, каждый раз, когда мы используем девайсы, встроенный в них код уже работает в фоновом режиме. Перемещение курсора с одной части экрана в другую может показаться простой задачей, но на самом деле за данный процесс отвечает немало строк написанного кода. Акт, столь же простой, как ввод букв в Google Docs, приводит к тому, что код выполняется в фоновом режиме. Это нормальные повседневные процессы, свойственные всем IT-устройствам.
Компьютерные программы также являются кодом. Однако лучше не использовать слово «коды»: это непрофессионально.
Естественный язык компьютера
Машины пользуются своим собственным языком. Они не понимают русский, английский или испанский. Естественным языком электронного оборудования является двоичный код — 1 и 0. Он представляют собой два состояния: on (1), off (0).
Осваивайте языки программирования
Чтобы общаться с машинами, которые говорят на двоичном языке, мы осваиваем такие языки, которые максимально близки к нашему собственному, а именно – языки программирования. Они четко структурированы и должны быть тщательно изучены.
Существуют высокий и низкий уровни. Языки программирования высокого уровня находятся дальше от машинного, чем языки низкого уровня. Это «дальше» обычно называют абстракцией.
Компьютер нуждается в понимании нашего человеческого языка. Для этого понадобится переводчик.
Определение переводчиков
Исходный код относится к коду, написанному на выбранном языке программирования. Переводчики же несут ответственность за преобразование исходного кода в машинный язык (те самые единицы и нули). Мы можем ссылаться на двоичные файлы, такие как код объекта, программу или общепринятый сегодня термин – приложение.
Переводчики могут быть любыми:
- интерпретаторы;
- компиляторы;
- гибриды интерпретаторов и компиляторов;
- ассемблеры.
Интерпретаторы
Чтобы разработка программного обеспечения прошла успешно, нужно понимать, что языки могут интерпретироваться. В таком случае переводчик обрабатывает исходный код по строкам и в готовой программе (приложении) также запускает каждую строку. Это означает, что интерпретируемый исходный код запускается до тех пор, пока не встретит ошибку. Затем интерпретатор перестает сообщать о таких ошибках.
Python – хороший пример интерпретируемого языка программирования.
Компиляторы
Компиляторы работают по-разному. Они полностью конвертируют исходный код с помощью компиляции в двоичный файл. Затем выполняется двоичный код. Если в исходном варианте были ошибки, они обнаруживаются и помечаются во время компиляции. Это прерывает процесс генерации двоичного кода.
Интерпретаторы работают построчно и выполняют одну линию перед тем, как перейти к следующей. Компилятор же переводит все строки программы в файл (двоичный) и выполняет его целиком.
Помните определение компьютерной программы? Это последовательность инструкций для компьютера. Выполнение программы обычно называется процессом. Такие ПО используют определенные ресурсы в компьютерной системе или любом другом девайсе. К ресурсам относятся память, дисковое пространство и файловая система.
Мы используем слово «run» при выполнении компьютерной программы. Время, затрачиваемое на запуск, называется временем выполнения программы.
Обычно рассматриваются продукты, известные как приложения. Еще мы ассоциируем программы с платформами или средами, в которых они работают или для которых предназначены. Существуют веб-приложения, запускаемые в браузерах, есть мобильные ПО, работающие на смартфонах, а также настольные, такие как Evernote.
Интерпретируемый исходный код выполняется из исходного файла, скомпилированный – преобразовывается в двоичный файл. Затем этот файл выполняется. Скомпилированный код может завершиться неудачно во время выполнения даже после успешной компиляции.
Гибридные переводчики
Гибридный переводчик представляет собой комбинацию интерпретатора и компилятора. Популярным гибридным языком программирования является Java.
Разработка программного обеспечения на Java удобна. Сначала исходный код компилируется в промежуточный формат, известный как Bytecode. Затем Bytecode интерпретируется и выполняется с помощью виртуальной машины. Это позволяет гибридным переводчикам запускать байт-код в различных операционных системах, делать его кроссплатформенным.
Ассемблеры
Ассемблер также используется для перевода низкоуровневого языка Ассемблер в двоичный, но мы сосредоточимся на языках высокого уровня.
Хороший способ понять различия переводчиков – лично увидеть их работу. Просто загрузите необходимые и установите на компьютер.
Часто задаваемый вопрос
Вот вопрос, который обычно задают начинающие: «С какого языка начать?»
Существуют сотни ЯП. Они оцениваются по популярности, комьюнити, долгосрочной поддержке, педагогике и использованию. Они также могут быть оценены по техническим параметрам. Например, являются ли они функциональными, императивными, статическими, сильными или слабо типизированными.
Некоторые языки программирования предназначены исключительно для образовательных целей, а не для использования в бизнесе. Хороший пример – ЯП для детей. Также существуют мощные языки, которые легко настроить и изучить. Python – один из них. Обычно его и рекомендуют начинающим.
Если вы заинтересованы в более подробном изучении вопроса, вот несколько хороших исследований.
Когда вы захотите изучить новый язык, понадобится переводчик языка. Это программа, которая устанавливается и настраивается в компьютерной системе.
Рекомендуем начать осваивать работу с командной строкой (CLI). Подумайте о терминале как об альтернативе графическому интерфейсу (GUI). Работая с компьютером посредством GUI, вы зависите от визуальных представлений каталогов и всего, что делаете. Но при использовании CLI вы взаимодействуете с компьютером напрямую, с помощью терминала и специальных команд.
$_
В Windows встроенный терминал представляет собой командную строку. Для пользователей Mac и Linux по умолчанию установлен терминал Bash. Чтобы использовать его в Windows, установите Git Bash или PowerShell.
Двигаемся дальше
Приготовьтесь, ведь разработка программного обеспечения началась! Подготовимся к написанию первой строки кода. Для этого потребуется следующее:
- Компьютерная система. Необязательно сложный или очень дорогой ПК. Подойдет просто компьютер, который хорошо работает.
- Установка CLI. Вот хороший курс для начала работы.
- Установка текстового редактора (например, Notepad++).
- Понимание хотя бы одного языка программирования. Из статьи вы узнаете основные элементы, которые составляют фундамент большинства ЯП.
Резюмируя вышесказанное, мы изучили основы с введением в переводчики. Слово «исходный код» уже не странно для вас. Более подробно мы рассмотрим его дальше.
Викторина
- Разработка программного обеспечения: какие основные инструменты нужны для начала?
- Какую команду следует использовать для таких операций в Bash (CLI):
- Проверить текущий каталог
- Перейти в каталог с именем «bin» (bin находится в текущем каталоге)
- Создать новый каталог под названием «lib»
- Создать новый файл под названием «book.py»
- Перечислить содержимое текущего каталога
Ответы на вопросы
- Компьютер, текстовый редактор, оболочка (терминал) и компилятор / интерпретатор
- Следует использовать такие команды:
- Проверить текущий каталог: pwd
- Перейти в каталог с именем «bin»: cd bin
- Создать новый каталог под названием «lib»: mkdir lib
- Создать новый файл под названием «book.py»: touch book.py
- Перечислить содержимое текущего каталога: ls
Часть 2: Исходный код и его 11 составляющих
К концу 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 будет гораздо проще.
Писать программы — важное умение для каждого. Программы используются в любых целях: повседневные находят себе место в автоматизации ежедневных процессов, бизнес используются для упрощения работы начальства и сотрудников компаний.
Новичков часто интересует вопрос — с чего начать. Ведь задача написать программу представляет собой не простой процесс, к которому нужно отнестись ответственно и потратить на него немало сил.
Определение идеи
Чтобы написать программу, которая работает, нужно хорошо продумать, что она должна делать и как. Для этого следует разобраться с целями, которые она должна решать, а затем разобраться с будущим функционалом. Для этого лучше записать ответы на следующие вопросы:
- Что должна делать написанная программа.
- Чем будет полезна.
- Как может помочь пользователям, чем упростит работу.
- Чем отличается от конкурентов, похожих программ.
- Где можно написать программу.
- На какой платформе написать прогу.
После ответа на эти вопросы должна сформироваться чёткая картинка того, как будет выглядеть продукт и что он будет делать.
Выбор языка программирования
В первую очередь решается, где можно написать программу. Языков огромное множество, и каждый из них индивидуален, отвечает разным запросам пользователей. Какой-то — полегче, другой — сложнее, третий — функциональнее. Среди профессиональных программистов уже давно гуляют разговоры о том, где лучше писать программы, перечисляя преимущества и недостатки каждого из возможных вариантов.
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
Поделиться в соц. сетях: