Задача
Вы положили деньги в банк на M месяцев из расчёта P % годовых. Написать программу, которая вычислит причитающуюся вам через M месяцев сумму. Программа запрашивает ввести с клавиатуры следующие данные:
1) сумма, которую вы положили в банке;
2) % из расчёта годовых;
3) на сколько месяцев вы положили деньги.
Итоговую сумму вывести на экран.
Содержание отчета:
1. Тема работы.
2. Задание (общее и согласно варианту)
3. Результат выполнения задания согласно индивидуальному варианту:
- условие задачи,
- постановка задачи,
- текст программы с комментариями (2 варианта на С и С++),
- результат работы программы.
4.Вывод о проделанной работе.
Контрольные вопросы:
1. Что представляет собой консольная программа?
2. Опишите технологию создания консольной программы на языке С/С++ в среде Microsoft Visual Studio.
3. Объясните, что содержат файлы со следующими расширениями *.cpp, *.obj, *.exe?
4. Для чего в программе на языке С/С++ используется директива #include?
5. Какие заголовочные файлы библиотек были использованы в программе? Объясните назначение соответствующих библиотек.
6. Что означает в программе строка void main ()?
7. Как оформляются комментарии в программе на языке С/С++?
8. Что такое входной поток?
9. Что такое выходной поток?
10. Перечислите, какие средства потокового ввода/вывода языка С++ были использованы для организации ввода данных с клавиатуры и вывода данных на экран. Приведите примеры и поясните.
11. Какие средства языка С++ использовались для организации корректной работы с вводимыми и выводимыми данными на русском языке? Запишите их и поясните.
12. Какие манипуляторы потокового вывода использовались в программе? Привести примеры и пояснить.
13. Какие средства в стандарте языка С можно использовать для ввода/вывода стандартных типов и строк? Перечислите эти функции. Поясните спецификаторы формата и управляющие символы.
Пояснения к работе
Понятие консольной программы
Консоль (Console) – представляет собой совокупность клавиатуры и монитора.
Консольное приложение — программа, для которой устройством ввода является клавиатура, а устройством вывода — монитор, работающий в режиме отображения символьной информации (буквы, цифры и специальные знаки).
Консольные приложения удобны при рассмотрении общих вопросов программирования, когда надо сосредоточиться на сути проблемы, а также как небольшие утилиты "для внутреннего потребления".
Структура программы на языке С/С++
Общая структура программы на С++ имеет вид (рис.1):
директивы_препроцессора
определение_функции_1
определение_функции_2
........
определение_функции_N
Рисунок 1
Среди функций обязательно присутствует главная функция с именем main. Простейшая программ на С++ содержит только главную функцию и имеет следующую структуру (рис.2):
Директивы_препроцессора
| |||
|
void main ()
{
|
операторы;
return;
}
Операторы – это выражения в С++, завершаемые точкой с запятой
Рисунок 2
Разберем пример простейшей программы на языке С++, которая выведет на экран текст "Hello!"
#include <iostream> /* директива препроцессора #include, которая
подключает заголовочный файл потоковой
библиотеки iostream,из которой мы будем брать средства для вывода информации на экран*/
void main()//заголовок нашей программы – главной функции
{ //открываем блок операторов главной функции
cout << " Hello! "; //вывод сообщения " Hello! " на экран
return; //указываем, что возвращает функция после завершения работы
} //закрываем блок операторов главной функции
Позже мы рассмотрим, как организуется ввод с клавиатуры. Сейчас же необходимо разобраться с одним из терминов, которым пользуются программисты при организации ввода и вывода информации. Таким термином является поток.
Что такое поток и потоковый ввод/вывод в языке С++?
Поток – это последовательность байтов, передаваемая в процессе ввода-вывода.
При организации ввода-вывода данных различают входной и выходной поток.
При выводе на экран (т.е. на консоль) модель выходного потока можно изобразить таким образом:
Рисунок 3. Модель выходного потока при выводе данных на экран (консоль)
Буфер вывода – это область оперативной памяти, куда программа передает байты данных. Т.е. выходной поток предполагает передачу данных из программы на внешне устройство, например в данном случае, экран монитора. В представленном выше примере программы мы применили для вывода на экран объект cout из библиотеки iostream, связанный со стандартным потоком вывода, и операцию << - операция вывода из потока на экран.
Следует отметить, что выходной поток может быть направлен не только на экран монитора (консоль), он так же может направляться в файл, на принтер, в сеть.
При вводе данных с клавиатуры модель входного потока можно представить следующим образом:
Рисунок 4. Модель входного потока при вводе в программу данных с клавиатуры
Буфер ввода – это область оперативной памяти, в которой размещаются вводимые в данном случае, с клавиатуры, байты данных. Как видно, далее, они будут переданы в программу.
Примечание: в языке С существуют другие средства для организации ввода с клавиатуры и вывода на экран, например, функции printf() и scanf() из библиотеки stdio.h.
В рамках этой лабораторной работы вам необходимо их освоить по примерам, изложенным в рекомендуемом учебнике.
Далее в программа мы будем применять средства потокового ввода-вывода из библиотеки iostream.h
Рассмотрим на примере текста программы.
Пример текста линейной программы
Условие задачи: создать программу вычисления значения функции y=sin(2x3)+1;
Постановка задачи: разработать программу для вычисления значения функции y=sin(x)2, где значение аргумента x вводится с клавиатуры в градусах, значение функции y выводится на экран с точностью до 4 знаков после точки.
Текст программы с комментариями:
Пример 2.
/* начало многострочного комментария
Программа вычисления значения функции y=sin(2*x^3)+1
конец многострочного комментария */
//однострочный комментарий
#include <iostream> // директива препроцессора #include, которая подключает
//потоковую библиотеку iostream
#include <windows.h> //подключить заголовочный файл библиотеки windows
#include <math.h> //подключить заголовочный файл математической
//библиотеки math
using namespace std;// означает пространство стандартных имен
//потоковой библиотеки
void main()//заголовок главной функции
{ //открываем блок операторов главной функции
//для корректного вывода и ввода текста на русском языке (на кириллице)
//будем использовать функции SetConsoleCP(1251); и SetConsoleOutputCP(1251);
// из библиотке windows
SetConsoleCP(1251); //выполняет установку кодовой страницы
// win-cp 1251 (кириллица) в поток ввода
SetConsoleOutputCP(1251); //установка кодовой страницы win-cp 1251
//в поток вывода
//потоковый вывод строки на экран
cout << " Вычислить значение функции y=sin(2*x^3)+1 " << endl;
// сout – объект из библиотеки iostream, связанный со стандартным
//потоком вывода
// << - операция вывода из потока
// endl – манипулятор для перевода строки, т.е. курсор будет переведен в
//начало следующей строки
double x //объявление переменной x вещественного типа double
double y; //объявление переменной y вещественного типа double
//потоковый вывод строки на экран
cout << " введите значение аргумента Х (в градусах)---> ";
//потоковый ввод с клавиатуры в переменную х
cin >> x // сin – объект из библиотеки iostream, связанный со стандартным
//потоком ввода
// >> - операция ввода из потока через буфер ввода в переменную
x = x * 3.14 / 180; //преобразовать x из градусов в радианы
cout.precision(2);//манипулятор setprecision (2) устанавливает 2 знака в дробной части
cout << "x в радианах = " << x << endl;
y = sin(2 * pow(x, 3)) + 1; //вычислить y
cout.precision();
cout << "значение y = " << y << endl;
system("Pause");//выполнить задержку в работе программы
return; //завершить работу
} // закрыть блок операторов главной функции
Дополнительные пояснения к тексту программы:
using namespace std; - означает пространство стандартных имен.
То есть, если бы вы не указали using namespace std;
то строку cout << " Hello! ";
пришлось бы писать std:: cout <<" Hello! "; Но если эта строчка написана то некоторые элементы можно писать без std::