Если в программе все операторы выполняются последовательно, один за другим, такая программа называется линейной. Рассмотрим в качестве примера программу, вычисляющую результат по заданной формуле.
Задача 1.1. Расчет по формуле
Написать программу, которая переводит температуру в градусах по Фаренгейту в градусы Цельсия по формуле:
C =5/9 (F-32),
где С - температура по Цельсию, a F — температура по Фаренгейту.
Перед написанием любой программы надо четко определить, что в нее требуется ввести и что мы должны получить в результате.
В данном случае:
- в качестве исходных данных выступает одно вещественное число, представляющее собой температуру по Цельсию,
- в качестве результата — другое вещественное число.
Перед написанием программы откроем интегрированную среду Visual C++:
Пуск/Программы/Microsoft Visual Studio/ Microsoft Visual C++ 6.00
Далее создадим проект. Для этого:
1) File > New...
2) В открывшемся окне:
- выберите тип Win32 Console Application;
- введите имя проекта в текстовом поле Project Name;
- введите (выберете с помощью кнопки …) имя каталога размещения файлов проекта в текстовом поле Location, например G:/ASOIZ/
- щелкните левой кнопкой мыши на кнопке ОК.
3) открывается диалоговое окно Win32 Console Application — Stepl of 1 и в нем:
- выберите тип An empty project;
- щелкните на кнопке Finish.
4) После щелчка появится окно New Project, в котором щелкните на кнопке ОК.
Далее создадим файл:
1) File > New.... В результате откроется диалоговое окно New.
2) На вкладке Files:
• выберите тип файла (в данном случае: C++ Source File);
• в текстовом поле File Name введите нужное имя файла;
• флажок Add to project должен быть включен;
• щелкните на кнопке ОК.
Набираем следующий текст программы:
Рассмотрим каждую строку программы отдельно.
В начале программы записана директива препроцессора, по которой к исходному тексту программы подключается заголовочный файл <iostream.h>. Это файл, который содержит описания операторов ввода-вывода cin и cout.
Любая программа на С++ состоит из функций, одна из которых должна иметь имя main, указывающее, что именно с нее начинается выполнение программы. После круглых скобок в фигурных скобках { } записывается тело функции, т.е. те операторы, которые требуется выполнить.
Любая заготовка при написании программы имеет вид:
#include <…>
#include <…>
int main()
{
объявление переменных;
ввод исходных данных;
расчет результата;
вывод результата;
return 0;
}
Для хранения исходных данных и результатов надо выделить достаточно места в оперативной памяти. Для этого служит оператор 2. В нашей программе требуется хранить два значения: температуру по Цельсию и температуру по Фаренгейту, поэтому в операторе определяются две переменные. Одна, для хранения температуры по Фаренгейту, названа fahr, другая (по Цельсию) — cels. Имена переменным дает программист, исходя из их назначения. Имя может состоять только из латинских букв, цифр и знака подчеркивания и должно начинаться не с цифры.
При описании любой переменной нужно указать ее тип. Поскольку температура может принимать не только целые значения, для переменных выбран вещественный тип float.
Основные типы:
int (short, unsigned) – целочисленные,
float (double, long double) – вещественные
char – символьный
bool – логический
Для того, чтобы пользователь программы знал, в какой момент требуется ввести с клавиатуры данные, применяется так называемое приглашение к вводу (оператор 3). На экран выводится указанная в операторе cout строка символов, и курсор переводится на следующую строку. Для перехода на следующую строку используется endl.
В операторе 4 выполняется ввод с клавиатуры одного числа в переменную fahr. Для этого используется стандартный объект cin и операция извлечения (чтения) >>. Если требуется ввести несколько величин, используется цепочка операций >>.
В операторе 5 вычисляется выражение, записанное справа от операции присваивания (обозначаемой знаком =), и результат присваивается переменной cels, то есть заносится в отведенную этой переменной память. Cначала целая константа 5 будет поделена на целую константу 9, затем результат этой операции умножен на результат вычитания числа 32 из переменной fahr.
Для вывода результата в операторе 6 применяется объект cout. Выводится цепочка, состоящая из пяти элементов. Это строка " По Фаренгейту:", значение переменной fahr, строка ", в градусах Цельсия:" , значение переменной cels и оператор перехода на новую строку endl.
Последний оператор (оператор 7) этой программы предназначен для возврата из нее и передачи значения во внешнюю среду.
Далее компилируем программу. Для этого нажимаем кнопку на панели инструментов либо комбинацию клавиш Ctrl+F7. В окне вывода (внизу экрана) должно вывестись сообщение 0 error(s), 0 warning(s) (0 ошибок, 0 предупреждений). Если есть ошибки - сверьте с оригиналом.
Для запуска программы нажимаем кнопку на панели инструментов либо комбинацию клавиш Ctrl+F5.
При запуске программы вместо русских символов видим ???, что вызвыно различными стандартами кодировки символов кириллицы в операционных системах MS DOS-и Windows. Для исправления добавим в программу функцию CharToOem (дополнения для наглядности выделены красным цветом)
#include <iostream.h>
#include <windows.h>
char buf[256];
char* RUS(const char* text)
{
CharToOem(text, buf);
return buf;
}
int main()
{
float fahr, cels;
cout<<endl<<RUS(" Введите температуру По Фаренгейту")<<endl;
cin>>fahr;
cels=5/9 * (fahr - 32);
cout<<RUS(" По Фаренгейту: ")<<fahr;
cout<<RUS(", в градусах Цельсия: ")<<cels<<endl;
return 0;
}
Функцию Rus() нельзя использовать более одного раза в цепочке операций << для одного объекта cout, поэтому мы разбили его на два.
Как вы можете видеть, результат выполнения программы со стабильностью оказывается равным нулю! Это происходит из-за способа вычисления выражения. Давайте вновь обратимся к оператору 4. Константы 5 и 9 имеют целый тип, поэтому результат их деления также целочисленный. Естественно, что результат дальнейших вычислений не может быть ничем, кроме нуля. Исправить эту ошибку просто — достаточно записать хотя бы одну из констант в виде вещественного числа, например: