Как и обещала, в понедельник я продолжаю рассказывать о том, как я мучаюсь наслаждаюсь, изучая С++ и сбиваю маникюр об клавиатуру, чтобы написать программу "Калькулятор". И вот, первый вариант уже готов, правда, пока без функций.
Без функций в том смысле, что я не использовала функции наподобие main(), обошлась циклом while и переключателем switch. Пока всё вроде получилось, и на прикреплённом в конце статьи видео можно посмотреть, как всё это работает.
Но сначала - несколько полезных вещей.
В предыдущей статье я писала, что у компиляторов С++ возникают проблемы с выводом символов кириллицы при работе программ - вместо нормальных букв и цифр выводятся какие-то иероглифы. Есть несколько способов решить эту проблему.
Первый - скачать из сети дополнительные библиотеки, вставить их в папку установки среды разработки (в моём случае Dev C++) а потом прописать их в настройках компилятора. Достаточно замудрёный способ, и работает не на всех IDE (интегрированных средах разработки) и не на всех версиях компиляторов, хотя я пользуюсь именно им. Подробно объяснять, как всё это сделать я не буду, достаточно набрать в поисковике Яндекса "Русификация Dev", или "Вывод символов кириллицы в Dev" - и будет вам счастье. Причём с пошаговой инструкцией.
Но лучше сделать всё по-нормальному. Во-первых, нужно включить в программу библиотеку clocale при помощи директивы unclude.
А затем первой строкой в функции main() написать: setlocale(LC_ALL, "Russian");
И всё. Только придётся это делать в каждой программе, где на экран будут выводиться сообщения на русском языке.
Кстати, эти два способа взаимоисключающие. Если использовать оба - работать не будет ни один. У меня, по крайней мере, не работают.
Ещё одно - консольная программа отрабатывает очень быстро. Если это программа приветствия, которую я приводила как пример в предыдущей статье - приветствие прочитать не удастся, консольное окно откроется и тут же закроется, выполнив свою функцию. Чтобы этого не происходило, нужно опять-таки включить в программу дополнительную библиотеку cstdlib при помощи unclude, а в конце функции main() перед return вставить строку: system ("pause");
И чтобы всего вышеперечисленного не приходилось делать заново в каждом проекте, я сделала себе рабочую заготовку:
Теперь, начиная новый проект, я просто открываю файл Default Program, а потом сохраняю под другим именем. Например, Calculator. Только перед строкой setlocale... и т.д. мне приходится ставить двойной слеш, чтобы перевести её в разряд комментариев (иначе вместо букв будут выводится "кракозябры"). Ну а теперь - перехожу к калькулятору.
Цикл while
Или "пока", если по-русски. Вот так он пишется:
while (условие)
{тело цикла}.
На скриншоте - фрагмент кода программы, где while начинается, а всё, что находится внутри фигурных скобок программа будет выполнять, пока на предложение выбрать действие я не нажму "5". В этом случае условие opn не равно 5 окажется ложным, и программа свою работу закончит.
Что такое opn. Это переменная, для которой я придумала такое хитрое сокращение - operation number. Объявляется она сразу после комментариев, первой строкой в функции main(). А затем объявляются ещё три переменных типа double - дробные числа, которые будут участвовать в вычислениях. И обратите внимание на третий по счету оператор cout - несмотря на то, что в коде всё написано одной строкой, на экран надписи будут выводиться разными строками.
Ещё один новый объект - это cin, (с-input, си-инпут). Из той же оперы, что и cout, только задача у него прямо противоположная - не выводить данные на экран, а считывать их с него. Сразу скажу пару слов об этих объектах - cout я уже успела обозвать и переменной, и оператором, а это всё неверно... и в то же время - верно. Вот такое оно, объектно-ориентированное программирование, один объект в разных программах может играть разную роль. Вот пока я использую свойство объекта cout выводить информацию на экран - он для меня является оператором вывода. Но у него есть и другие свойства, до которых я ещё доберусь. И объект cin - точно так же, пока будет работать в качестве оператора ввода.
Переключатель switch
Язык не поворачивается, назвать эту конструкцию оператором - хотя бы потому, что в нём используются ещё и ключевые слова case и break. Хотя иногда называют. Вообще, как я убедилась, в разных книгах и справочниках терминология зачастую сильно различается - ту же функцию main() как только не называют. И методом, и точкой входа в программу. Но слово "функция", на мой взгляд, подходит лучше всего. Просто потому, что это действительно функция, пусть и самая главная. Но не о ней сейчас речь.
switch (вариант)
{
case вариант 1:
break;
case вариант 2:
.....
break;
default:
}
Это пример конструкции switch. Словом case обозначается вариант, а слово break прекращает работу switch после выполнения выбранного варианта. Забуду поставить break - будут выполнены и все последующие операторы case. Если допустимых вариантов нет - срабатывает default. В моей программе это произойдёт, если вместо чисел от 1 до 5 ввести, например, 8. Появится надпись - "Некорректный ввод..." и программа снова предложит выбрать действие. Код моей программы - на скриншотах:
Так что, черновик калькулятора на С++ уже готов. Правда, сначала я собиралась использовать функции, но, кажется, и без них код получился компактным и не слишком сложным для восприятия. Золотое правило - если работают простые вещи, не нужно их усложнять. Ну, разве что в учебных целях.
Теперь стоит подумать о проверке корректности вводимых данных - мне ведь не нужно складывать, умножать и делить буквы? Вот этим и займусь, а что получится - расскажу в своих следующих записях.
Смотрим видео"
Если ещё не читали - предыдущая статья на эту тему:
Case 5:
cout<<"Выход из программы..."<<endl;
break;
Пока!