УРОК №3 |
ФОРМАТИРОВАННЫЙ ВВОД И ВЫВОД ДАННЫХ |
Уже пора начать составлять программы, результат которых виден на экране.
Как я писал ранее, практически любая программа состоит из 4 частей: 1. Блок объявления данных. 2. Блок ввода исходных данных. 3. Блок обработки данных. 4. Блок вывода информации на экран. Для программистов существует некая информационная культура. Ее суть заключается в том, что пользователю наших программ должно быть понятно, какие исходные данные требуются от него для ввода и какие результаты он получает в результате выполнения программ. |
Ввод-вывод данных в языке C++ осуществляется либо с помощью функций ввода-вывода в стили C, либо с использованием библиотеки классов C++. Преимущество объектов C++ в том, что они легче в использовании, поэтому предлагаю рассмотреть именно их.
При подключении этого файла с помощью директивы #include <iostream> в программе автоматически создаются виртуальные каналы связи cin для ввода с клавиатуры и cout для вывода на экран, а также операции помещения в поток << и чтения из потока >>.
5<Enter> 6<Enter> cin>>a>>b; При выполнении пользователь набирает на клавиатуре соответствующую последовательность значений, разделяя их пробелами и программа будет ждать ввода значений переменных а и b так: 5 6<Enter> Операции ввода/вывода в языке Си организованы посредством библиотечных функций (причем их довольно много). Самый простой механизм ввода - чтение по одному символу из стандартного входного потока (с клавиатуры) с помощью функции getchar( ). int getchar(void); Здесь определен тип единственного аргумента (void) и тип возвращаемого функцией значения (int).Оператор вида:
Важно!!! Количество форматов в строке должно быть равно количеству адресов переменных в списке. Кроме того, тип переменных должен совпадать с указанным.
|
В языке программирования Паскаль за ввод данных отвечает стандартные процедуры: ожидания ввода read, readLn - [читать, читать строку], а за вывод на экран отвечает оператор write - [пиши, пиши строку].
5<Enter> 6<Enter> Readln(a,b); - При выполнении этого оператора пользователь набирает на клавиатуре соответствующую последовательность значений, разделяя их пробелами и программа будет ждать ввода значений переменных а и b так: 5 6<Enter> Важно!!! Помните, что все переменные указанные внутри процедуры Read и Write должны быть объявлены в блоке объявления данных VAR.
Тип данных, вводимых во время работы программы, должен соответствовать типу переменной, указанной в инструкции ввода. В случае несоответствия типа введенных данных типу переменной, значение которой вводится с клавиатуры, программа завершает работу, и на экран выводится сообщение об ошибке ввода/вывода. |
Для вывода данных на экран С++ использует объект cout и оператор <<
|
В Паскале для вывода информации используется процедура write.
|
Для корректного их использования манипуляторов необходимо подключить библиотеку iomanip с помощью оператора #include <iomanip>
cout.setf(ios::right); cout.width(15); cout<<"r="<<r<<endl; Выравнивание по правой границе, шириной вывода 15. r=-25 Подробнее о флагах и манипуляторах можно посмотреть здесь.
Модификатор вывода dec, oct и hex позволяют выводить числа в десятичном восьмеричном или шестнадцатеричном виде.
#include <iostream.h> void main(void) { cout << "Восьмеричный: " << oct << 10<< endl; cout << "Шестнадцатеричный: " << hex << 10 << endl; cout << "Десятичный: " << dec << 10 << endl; } Восьмеричный: 12 Шестнадцатеричный: а Десятичный: 10 |
Writeln('f=',f:3); f= 3 PAS. Важно!!! Надеюсь, вы заметили у процедур ввода и вывода окончание Ln. Это позволяет после вывода переместить курсор на следующую строку.
С++. Важно!!! Надеюсь, вы заметили у объекта вывода модификатор<< endl; Это позволяет после вывода переместить курсор на следующую строку.
|
ЗАДАЧА
Найти сумму двух целых чисел введенных пользователем и вывести результат на экран.
Пример программы С++:
#include <stdio.h> // Подключение модулей #include <conio.h> #include <windows.h> #include <iostream> // библиотека, в которой содержатся потоки ввода и вывода cin и cout. #include <iomanip> // Подключение модуля манипуляторов форматирования, таких как <<endl; using namespace std; // Использовать пространство стандартных имён. int a,b,c; // объявление переменных целого типа. main() /*Главный модуль программы */ { /*Начало*/ SetConsoleCP(1251); SetConsoleOutputCP(1251); // Активация Консоли на русском языке cout<<"Введите два числа "; // подсказка для ввода cin>>a>>b; // ввод данных c = a + b; // вычисления (оператор присваивания) cout<<"Результат: " <<a<<"+"<<b<<"="<<c; // вывод результата getch(); } // Конец программы Результат на экране монитора: Введите два числа 5 6 Результат: 5+6=11
Пример программы для стиля Си:
#include <stdio.h> #include <conio.h> main() { float cena, ves,s; printf("Input the weight of the apples in kilograms "); scanf("%f",&ves); // ввод вещественного числа (дробного) printf("Input the price of apples per kilogram "); scanf("%f",&cena); // ввод вещественного числа (дробного) s=cena*ves; printf(" \t The cost of the apples: %9.2f\n",s); // вывод результата в формате 9 символов ширина из них 2 символа после точки. getch(); } Результат на экране монитора: Enter the weight of the apples in kilograms 2.300 Enter the price of apples per kilogram 162 The cost of the apples: 372.60
|
Пример программы Pascal:
Program i_o; Var a,b,c: integer; {объявление переменных} BEGIN writeLn( ' Введите два числа ' ); {подсказка для ввода} Readln(a,b); {ввод данных} c:=a+b; {вычисления (оператор присваивания)} writeln( ' Результат: ',a,'+',b,'=',c ); {вывод результата} readln; END. Результат на экране монитора: Введите два числа 5 6 Результат: 5+6=11
Пример программы Pascal:
Program apple; Var cena, ves,s: real; BEGIN write( ' Введите вес яблок в килограммах ' ); Readln(ves); {ввод вещественного числа (дробного} write( ' Введите цену яблок за килограмм ' ); Readln(cena); {ввод вещественного числа (дробного} s:=cena*ves; writeln( ' Стоимость яблок: ',s:9:2); {вывод результата в формате 9 символов ширина из них 2 символа после точки} readln; END. Результат на экране монитора: Введите вес яблок в килограммах 2.300 Введите цену яблок за килограмм 162 Стоимость яблок 372.60
|
Стандартные библиотеки С++
- #include <iostream> – библиотека, в которой содержатся потоки ввода и вывода cin и cout.
- #include <iomanip> – библиотека, в которой содержится модификатор setw. С его помощью можно, например, установить ширину поля для каждой координаты вектора, или элемента матрицы.
- #include <cmath> – в этой библиотеке содержатся тригонометрические функции, логарифмы, модули и другие функции, предназначенные для выполнения простейших математических операций.
- #include <cstddef> – библиотека, в которой содержится указатель NULL.
- #include <cstdlib> – содержит в себе функции, занимающиеся выделением памяти, контроль процесса выполнения программы, преобразования типов и другие.
- #include <fstream> – содержит в себе потоки ifstream и ofstream, которые организовывают чтение/запись из/в файл(а).
- #include <cstring> – содержит в себе функции для работы со строками, такие как strlen (вычисление длины строки), strcpy (копирование строки), strcat (объединение строк), strcmp (сравнение строк) и некоторые другие.
- #include <windows.h> - расширенная библиотека управления консолью.