Тема урока: Язык программирования Си++.
Цель урока: закрепить основные понятия и первичные навыки составления программ на Си++
С давних времён человек испытывал необходимость в использовании какого-либо устройства, которое помогло бы ускорить проведение расчётов. Современные компьютеры способны выполнять огромное количество операций в секунду. Но для того, чтобы компьютер помог провести вычисления в соответствии с поставленной задачей, сначала нужно обдумать алгоритм её решения, а потом, выбрав язык программирования облечь этот алгоритм в форму, "понятную" компьютеру.
Язык программирования - формальный язык, предназначенный для записи компьютерных программ. Язык программирования определяет набор правил, определяющих внешний вид программы и действия, которые выполняет исполнитель (обычно - компьютер) под её управлением.
(Википедия https://ru.wikipedia.org/wiki/%D0%AF%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)
Язык программирования Си++ используется сейчас достаточно часто для составления программ. Многие языки программирования похожи по способу записей команд на Си++, а также является одним из профессиональных языков программирования.
Можно прочитать статью про рейтинги языков программирования. Си++ занимает одну из ведущих позиций. https://progtips.ru/yazyki-programmirovaniya/rejting-yazykov-programmirovaniya.html
Существует множество сред программирования. Вы уже познакомились со средой программирования PascalABC. А с языком Си++ можно работать в средах Visual Studio, Qt Creator, Clion, Eclipse, Xcode, CodeBlocks, NetBeans, Atom, Dev C++, Microsoft Visual C++, Borland’s C++ Compiler
Команда вывода.
В любом языке программирования существует команда (или несколько разных команд со своими особенностями), которые способны выводить какую-то информацию.
Рассмотрим интерфейс CodeBlocks. После загрузки появится такое окно:
Выбираем пункт "Create a new project". В следующем окне "Console application", а также в верхнем правом углу после этого кнопку "Go". В следующем окне выбираем кнопку "Next":
В этом окне начинаем заполнение со второй строки. Стрелкой указано на кнопку с тремя точками, которая помогаем выйти в окошко, в котором мы определяем, на каком диске и в какой папке будем сохранять проект программы. Далее в первой строке записываем имя программы (английскими буквами, возможно использовать цифры, например, zadacha21. При этом автоматически появляется название программы в нижней строке. Далее нажимаем "Next".
Получается такой вид окна:
Щёлкаем по кнопке "Finish". Получаем такое окно:
Теперь щелкаем по плюсику рядом с надписью Sourses. И двойной щелчок по "main.cpp".
Вот на этой страничке мы и будем писать свою программу.
Немного позже, когда научимся писать простые программы, нужно будет научиться и пошаговому исполнению программы.
Программа на языке программирования Си++ начинается после открывающейся фигурной скобки {, а заканчивается закрывающейся фигурной скобкой }. В качестве примера в новой программе сразу записан оператор вывода cout с общепринятым для начинающих программистов приветствием "Hello, World!";
Есть несколько режимов запуска готовой программы Рассмотрим эти три режима.
"Жёлтая шестерёнка". Только компиляция, с целью проверки текста программы на ошибки.
"Зелёный треугольник". Только выполнение. Используется после того, как компиляция прошла успешно, этот режим нужен для многократной проверки разных тестовых начальных данных для одного и того же текста программы, который уже прошел компиляцию.
"Шестерёнка + треугольник". Компиляция + выполнение. Если текст программы был изменён, то можно пройти компиляцию и при её успешном завершении, сразу отправить программу на выполнение.
Вывод информации на экран
Команда cout << предназначена для вывода на экран данных: сообщений или значений переменных, об этом подробнее будем говорить позже. Читается "Си аут". Текст, который вы хотите вывести на экран печатается в двойных кавычках. Текст не анализируется и выводится на экран точно в таком виде, как его записали. Есть одно замечание: текст должен быть напечатан английскими буквами. Если вы хотите напечатать текст на русском языке для этого в начале кода программы, то об этом мы с вами поговорим чуть-чуть позже.
В любой программе эту команду вывода можно использовать любое количество раз. Если в следующий вывод данных, их нужно напечатать с новой строки, в конце предыдущей команды придётся напечатать ещё одну команду перевода курсора в новую строку.
Пример: cout << "Hello!" << endl;
cout << "New line";
Первая строка заканчивается командой endl (то есть "end line" - конец линии, строки); следующая команда вывода начнёт работу с новой строки.
Можно написать и отдельную команду перевода курсора на следующую сроку.
cout << endl;
Пример 14.2. Выведем на экран компьютера следующий текст:
«Привет! Я компьютер!!!
Я умею выполнять программы!
Сегодня ты написал свою первую программу, а я ее выполнил. Сейчас на экране – результат этой программы».
Изначально в самом верху кода нужно добавить следующее: #include <locale.h> (смотри рисунок). И после открывающейся скобки записать команду: setlocale(LC_ALL,"Russian");
Возможно потребуются еще такие действия: в настройках кодировки программы CodeBlocks: Панель меню - Settings - Editor... - в меню открывшегося окна нажать: Encoding settings - Use encoding when opening files выбрать: WINDOWS-1251 - внизу окна нажать "Ok" для сохранение изменений.{ setlocale(LC_ALL,"Russian");
cout << "Привет! ";
cout << "Я компьютер!!!"<< endl;
cout << "Я умею выполнять ";
cout << "программы!"<< endl;
cout << "Сегодня ты ";
cout << "написал свою ";
cout << "первую программу,";
cout << " а я ее выполнил."<< endl;
cout << "Сейчас на экране -";
cout << " результат этой программы." << endl;
}
Если кавычки в команде не используются, то происходит анализ содержимого для вывода на экран. Если будет записано арифметическое выражение, то оно сначала вычисляется, а потом на экран выводится его значение.
cout << "2 + 2 * 2 = ";
cout << 2 + 2 * 2;
результатом будет строка: 2 + 2 * 2 = 6.
Понятие типа данных
Программа, которая написана для решения конкретной задачи с её известными данными всегда будет выдавать один и тот же ответ. Ценность такой задачи незначительна, даже если решена сложная задача. Чаще всего составляют программу, которая поможет решить множество задач со схожим способом решения. Например, посмотрите на следующие задачи.
1) Пете 8 лет, а Ване - 10 лет. Сколько лет им вместе?
2) Масса кошки - 5 кг, а масса собаки - 10 кг. Какова их общая масса?
3) Маше на день рождения подарили 5 шоколадных монеток в золотой фольге и 8 шоколадных монеток в серебряной фольге. Сколько шоколадных монеток теперь есть у Маши?
Все эти задачи находят своё решение через нахождение суммы известных величин. Первую величину можно обозначить a, вторую величину - b. Тогда ответ задачи может быть найден как (a + b).
Зная формулу нахождения площади треугольника S = ab, можно найти площадь любого прямоугольника, у которого известны длины его сторон.
В программировании часто используется понятие "данные". Что это такое?
Данные - информация, представленная в пригодном для обработки на компьютере виде. Например, вы вводите в компьютер два числа, компьютер может их обработать - сложить, вычесть и произвести некоторые другие действия.
Также в программировании различают константы и переменные.
Переменная - именованная ячейка памяти, хранящая значение некоторой величины, которая может изменять это значение в ходе выполнения программы.
Итак, в программе мы некоторой ячейке памяти можем дать имя, придуманное нами. Каковы правила составления имён? Правила формирования имен переменных очень просты.
Имя переменной (идентификатор переменной) - это последовательность символов латинского алфавита и цифр, начинающаяся с буквы. Кроме букв и цифр для образования имени переменной можно также использовать символ подчеркивания(_), который в этом случае рассматривается как буква, т.е. может быть первым в имени переменной.
На длину имени не накладывается ограничений, однако для компилятора Си значащими являются первые 32 символа и, таким образом в имя переменной легко вносить содержательный смысл.
Примеры правильных имен:
Salary Summa_A rezistor1_R25 TEXT_NO
alpha Summa_B rezistor2_R26 TEXT_YES
beta DELTA GAMMA _Name_
Недопустимые имена:
4ТАХА - первый символ не буква;
Vatra.34 - содержит недопустимый символ точку;
сhar - имя совпадает с ключевым словом;
Имена в программе должны быть уникальными (особенными, не повторяющимися) и ни в коем случае не должны совпадать с ключевыми словами. Для каждой переменной, существующей в программе под определенным именем, занимается область оперативной памяти, в которой будет храниться значение переменной.
Тип данных определяет способ хранения данных в памяти компьютера, диапазон возможных значений данных и операции, которые с этим типом данных можно выполнять.
Компьютер в ячейках памяти может хранить разную информацию с разными типами данных: целые и действительные (дробные) числа, отдельные символы, текст и т.д.
Целые типы данных (диапазоны значений)Тип | Диапазон значений | Память (байты) |
[signed] short [int] | -32768 ÷ 32767 | 2 |
int [signed] int | -2 147483 648 ÷ 2 147483 647 | 4 |
unsigned short [int] | 0 ÷ 65535 | 2 |
unsigned [int] | 0 ÷ 4294967295 | 4 |
long [signed] long [int] | -2 147483 648 ÷ 2 147483 647 | 4 |
unsigned long unsigned long [int] | 0 ÷ 4 294 967 295 | 4 |
long long int long long | -9223372036854775808 ÷ 9223372036854775807 | 8 |
Для начала программирования мы будем использовать целочисленный тип int. Для того, чтобы иметь возможность пользоваться переменной в программе, нужно её описать. Описание выполняется ДО использования переменной. Это делается для того, чтобы программа успела выделить память для хранения значения переменной (посмотрите в таблицу в последний столбец: на разные типы данных может выделяться разное количество памяти в байтах). В ходе выполнения программы значение переменной может изменяться несколько раз. Этим она и отличается от константы, которая своё значение в программе изменить не может.
Пример описания переменных:
int a, b, c;
int y;
long long f;
Если нужно работать с переменными, которые будут хранить не целые числа, то может использовать тип float.
float k;
Для более подробного ознакомления с разными типами данных, их диапазонами числовых значений и занимаемой памятью можно ознакомиться здесь: https://metanit.com/cpp/tutorial/2.3.php
Оператор описания переменных в общем случае имеет следующую общую форму записи:
<тип> <список имен переменных>;
где <тип> определяет тип значений, которые могут принимать переменные списка. В качестве <тип> используется одно из ключевых слов int, float, double или char;
<список имен переменных> - это перечисление имен переменных, отделенных друг от друга запятой;
Точка с запятой является признаком конца оператора. Между ключевым словом, определяющим тип переменных и списком их имен должен быть хотя бы один пробел.
Оператор присваивания
При составлении программ одним из наиболее часто встречающихся является оператор присваивания. При помощи этого оператора можно выполнить:
а) присваивание какой-либо переменной значения, соответствующего ей типа данных;
б) вычисление логического или арифметического выражения, результат которого можно записать как значение переменной.
Формат записи оператора присваивания: <имя_переменной> = <выражение>;
В записи числовых выражений можно использовать знаки арифметических операций ( + сложение, - вычитание, * умножение, / деление), скобки, математические функции (для некоторых нужно подключать специальные модули #unclude). Для основных четырёх математических операций очерёдность выполнения действий сохраняется ( умножение и деление выполняются раньше, чем сложение или вычитание). Если нужно изменить порядок выполнения действий, используйте скобки.
Основные ошибки в записи выражений и команды присваивания на первых порах такие:
1) забывают в конце команды поставить знак "точка с запятой";
2) десятичные числа записываются не через десятичную запятую, а через точку (например, 7.3);
3) забывают расставить скобки так чтобы порядок действий соответствовал запланированному выражению, иначе говоря - нарушается порядок выполнения действий;
4) в математике принято пропускать запись действия умножения между числом и переменной или между переменными, в программировании это недопустимо.
Рассмотрим несколько примеров:
Примеры записи оператора присваивания:
x = 7;
x1 = 3.5;
a_1 = 20 * (x + x1) - 32;
y = y + 7;
Работает команда присваивания следующим образом: берётся копия значения переменной, если она участвует в выражении справа и подставляется для расчётов в арифметическое выражение. Итог вычислений запишется в переменную, которая указана слева от знака присваивания. При этом такая переменная "забывает" своё старое значение, если до этого что-то было в неё записано.
Про действие деления нужно сказать отдельно. Если делитель и делимое - оба, целые числа, то результатом деления в Си++ будет целая часть от деления. (21 / 4 = 5)
Если один или оба участника деления имеют дробный тип данных, то и результат тоже будет дробным числом (точным либо округлённым до некоторого числа знаков после десятичной точки). (21.0 / 4 = 5.25)
Ещё одна отличительная особенность Си++ от Pascal. Когда в Си++ переменная при описании получает определённый тип, в этот момент ей выделяется в оперативной памяти тот объём, который предназначен для хранения любого числа из диапазона такого типа данных, а в саму переменную записывается "мусор", то есть произвольное число из этого диапазона. Обращайте на это внимание. Если вы завели новую переменную, то она должна получить своё значение либо числовое, либо с помощью вычислений значения арифметического выражения, либо путём ввода данных с клавиатуры ( об этом позже).
Запишем оператор присваивания для математических выражений:

Пример. Запишем оператор присваивания, после выполнения которого значение переменной a увеличится в 2 раза, а переменной b уменьшится на 3.
В языках программирования допустимы команды присваивания следующего вида:
a = a * 2;
Смысл такой команды следующий: из ячейки памяти извлекается значение переменной a, затем оно умножается на 2, результат записывается в ту же ячейку памяти. Старое значение переменной a будет потеряно.
Запись оператора присваивания для изменения значения переменной b следующая:
b = b − 3;
Ещё раз обращаю внимание: это не проверка равенства! Сначала вычисляется значение выражения справа, а потом это значение записывается в ячейку памяти, за которую отвечает переменная, указанная слева, затирая её предыдущее значение безвозвратно!
Также определены операторы присваивания со значками +=, –=, *=, /=. Они позволяют изменить значение переменной. Например:a *= 2; // увеличить a в 2 раза; то же самое, что a = a * 2;
b –= 3; // уменьшить b на 3, то же самое, что b = b − 3;
Ввод данных
Начальные значения переменным можно задавать не только с помощью оператора присваивания, но и путем ввода с клавиатуры. Дело в том, что чаще всего пользователю недоступна возможность исправления текста программы. Поэтому, если вы в программе назначите переменной а значение 7, то изменить его вряд ли получится на какое-то другое значение. Какой есть выход? Для того, чтобы каждый раз находить решение задачи с новым набором данных и существует оператор ввода данных. Вспомните как в математике вы упрощали выражение, а потом выполняли задание: найдите значение выражения при а = 9, а = 1.5, а = 0...
Для нахождения ответа на каждое значение не придётся делать изменение в программе, если воспользоваться оператором (командой) ввода данных. То есть при каждом запуске программы, она у вас будет запрашивать: а чему сейчас вы хотите, чтобы была равна переменная а?
Командой ввода в Си++ часто берут команду cin (читается "си ин"). Но она не является единственно возможной командой для ввода. Есть и другие со своими особенностями.
Пример записи команды:
cin >> a >> b;
cin >> d;
Если в одной строке мы хотим записать два числа: первое для переменной a, а второе для переменной b, то в примере за это будет отвечать первая строчка. Числа записываются в одной строке и разделяются знаком пробела. По окончании ввода чисел нужно нажать клавишу "Enter". Обратите внимание на значок ">>". Он указывает направление: из потока берётся первое число и направляется в первую указанную переменную, второе - в следующую.
Во второй строке примера показан пример ввода только одного данного числа в переменную d.
Рассмотрим пример. Ввести два числа, найти и вывести их сумму.
Текст программы:
#include <iostream>
using namespace std;
int main() {
float a, b, S;
cin >> a >> b;
S = a + b;
cout << "a + b = " << S << endl;
return 0;
}
Когда текст программы набран, щелкаем по значку "Шестерёнка с треугольником" - компиляция и выполнение, возникает чёрное окно, ожидающее, какие числа мы введём для наших двух переменных:
В качестве двух данных чисел введём 3.2 и 7, разделяя их пробелом. (Можно ввести и так: первое число и клавиша "Enter", второе число и клавиша "Enter").
Вторая строка в этом окне - это результат выполнения команды вывода: сначала печатается сообщение "a + b = ", а потом значение переменной S (оно равно 10.2).
Чтобы это окно убралось, есть подсказка на английском языке: нажмите любую клавишу.
Структура программы
Все программы на языке программирования Си++ мы будем писать по следующей общей схеме:
#include <iostream>
using namespace std;
int main() {
... //здесь текст программы
return 0;
}
В программе можно выделить следующие разделы:
#include <iostream>
подключаемые библиотеки (модули) - с ним мы будем знакомиться постепенно, в ходе изучения языка программирования. На первых порах будет хватать модуля "iostream", который отвечает за организацию ввода-вывода данных программы.
using namespace std;
Если бы не писали эту строку, которая отвечает за пространство имён (эта фраза часто используется, но новичкам ни о чём не говорит!), то в тексте программы пришлось бы тогда писать команды для ввода и вывода, чтобы они работали, следующим образом:
std::cin >> a;
std::cout << "Hi!" << std::endl;
int main()
Начальное слово "Int" обозначает, что по окончании работы программа должна выдать целое число, и это число будет 0, если всё пойдёт по плану, иначе 0 на выходе не получим. За вывод этого числа отвечает последняя команда return 0; Немного выше был скриншот выполнения программы, где можно было увидеть строку "Process returned 0". Вот об этом и шла сейчас речь.
Название "main()" главной функции менять нельзя. Вы в будущем познакомитесь с написание и других функций, но пока для простейших программ хватит и главной функции. В скобках можно указывать некоторые входные данные для каждой функции, в том числе и для нашей главной, но мы пока это делать не будем, оставляя скобки пустыми. Но это не значит, что скобки можно не писать!!! Скобки "{" и "}" показывают, где начинается и заканчивается определённый блок программы (это может быть блок главной программы или блок команд внутри главной программы).
Описание переменных с указанием их типа может происходить в том месте программы, где программисту они понадобятся. Главное это сделать до начала их использования. И обязательно обеспечить переменной начальное значение (либо вводом этого значения в ходе выполнения программы с клавиатуры, либо с помощью команды присваивания).
Комментариев нет:
Отправить комментарий