Найти тему
Alyona Verden. Поговорим...

Крестики, нолики... хотя нет, только "крестики". Новый уровень - от Visual Basic к С++

Ещё этот язык программирования называют "плюсы", или "кресты". И я, кажется, достаточно в нём разобралась, чтобы сделать первый серьёзный проект, и написать первую серьёзную статью.

Всем привет, снова с вами начинающая программистка Алёна со своим дневником. Запись номер семь.

Задача следующая - перевести калькулятор с Бейсика на С++. Функционал оставить тот же, четыре арифметических действия, а вот внешний вид... М-да. На С++ у меня такой красивый не получится (пока). Только консольная версия, и выглядеть она будет вот так:

Пример работы консольного калькулятора на С++
Пример работы консольного калькулятора на С++

И работать с ней будет не так удобно - сначала нужно будет выбрать действие, а уже потом вводить числа. Зато сама программа с точки зрения программистки, пусть и начинающей, будет гораздо "круче".

Задача не на одну статью, поэтому сегодня я расскажу только о С++, и как написать на нём самую простую программу.

Итак, поехали. Среду разработки (IDE) я выбрала Dev C++, версию не самую новую, зато с полезной фишкой в плане вывода символов кириллицы (у С++ с этим проблемы). В современной версии Dev C++ от компании Embarcadero почему-то не работает ни один из трёх способов решения этой проблемы, которые я знаю. А Code::Blocks я пока ещё не начинала осваивать.

Вкратце о С++

Это, наверное, один из вечных языков программирования. Где-то с 2000 года ему предрекли забвение, в связи с появлением Java, JavaScript, и т.д., и т.п. С тех пор уже более 20 лет его пытаются забыть, но никак не получается (как и его прародителя С). Причина простая - на С и С++ можно написать операционную систему, а на Java - нет. А более подробно об истории С++, его отличии от других языков, можно прочитать в любой книге, ему посвящённой. Хотя бы вот в этой: Джесс Либерти, "Освой С++ за 21 день".

Структура программы

Любая программа на С++ имеет такую структуру:

"Символ решётки" Include<iostream>

Using namespace std;

Здесь могут быть объявлены переменные, функции и другие объекты.

Int main()

{

Здесь, внутри функции main, главной функции С++, делается всё, что программа должна делать.

Return 0;

}

Здесь обычно идёт описание объявленных функций.

Далее, в процессе написания кода, я буду расшифровывать все эти непонятные слова. Пока же скажу вот что - в С++ особое внимание следует уделять всем этим точкам с запятой, круглым и фигурным скобкам. От этого зависит, как программа будет воспринимать то, что вы ввели - например, если скобки после int main убрать, main будет восприниматься не как функция main, а как переменная целочисленного типа (integer) с именем main. И это ещё одна ошибка - "main" не является допустимым именем, как и любые операторы и ключевые слова. "Символ решётки" я написала словами, потому что редактор Дзена решетку воспринимает как знак хештега - пришлось импровизировать. 😏

В редакторе кода листинг (программа, написанная на листе бумаги или в текстовом редакторе) простейшей программы на С++ выглядит вот так:

Простейшая программа на С++
Простейшая программа на С++

Эта программа выводит в консольном окне четыре строки, какие именно - видно на рисунке.

Теперь пояснения. Директива препроцессора include даёт команду включить в код программы содержание файла iostream (input - output stream). Это заголовочный файл, хотя сейчас такие файлы чаще называют библиотеками, в котором описаны все основные элементы С++ (оператор cout, например). Из расшифровки названия ясно, что эта библиотека управляет потоком ввода - вывода информации (в основном).

Using namespace std - команда использовать стандартное пространство имён. Это сама по себе отдельная тема, поэтому не буду на ней сейчас останавливаться. Скажу только, что эта строка, написанная перед main() работает со всей программой. А если нам этого не нужно, т.е. планируется использовать два или более пространства имён, придётся на каждый оператор давать соответствующую команду. Вот так:

std::cout<<"Меня зовут Алёна. \n";

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

Наконец-то я добралась до оператора, который и делает всю работу - cout... только это не оператор. 🤭 Оператор на самом деле - <<, наподобие знака "плюс" (+), "равно"(=) и т.д. И этот оператор даёт команду взять строку "Меня зовут Алёна!", поместить её содержимое в переменную cout (си-аут) и вывести на экран. Только обычно этими тонкостями никто не заморачивается, и оператором си-аут называют всю конструкцию.

Оператор endl - переход на новую строку. Если его убрать, две строки выведутся как одна:

Hello world! I love programming!

В первой строке я использую endl, а в последующих - оператор \n, выполняющий ту же функцию.

И завершение функции main() - оператор return 0 (тут вообще-то можно любое число поставить. Типа integer).

Почти каждая функция С++ должна вычислять и передавать (возвращать) в программу какое-либо значение, и main() - не исключение. А поскольку данная программа никаких вычислений не делает, передача значения в программу делается искусственно, при помощи return. Int (integer) перед main() - это как раз указание типа значения, которое функция должна возвращать. Однако, если нужно использовать функцию, которая ничего не вычисляет, и ничего не должна возвращать в программу, можно обозначить такую функцию словом void.

Инструменты для калькулятора

При помощи оператора if я написала код для меню своего калькулятора и операции сложения:

Фрагмент кода на С++
Фрагмент кода на С++

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

Меню будет работать с оператором switch, "переключатель", который позволяет выбирать действие из нескольких вариантов.

Для каждой операции будет служить своя функция, которую switch и будет вызывать.

Программа должна работать, пока не выбран пункт меню "Выход" - для этого я использую цикл while.

Вроде бы не так много. А на самом деле - вполне достаточно для двух - трёх статей, если писать кратко, и для пары десятков - если разбирать все подробности.

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

Ну а на сегодня у меня всё, и если не случится чего-нибудь особенного - увидимся в понедельник. Пока!

Return 777;

End