Урок №3 "Форматированный ввод и вывод"

Уже пора начать составлять программы, результат которых виден на экране.
Как я писал ранее, практически любая программа состоит из 4 частей:
1. Блок объявления данных.
2. Блок ввода исходных данных.
3. Блок обработки данных.
4. Блок вывода информации на экран.
Для программистов существует некая информационная культура. Ее суть заключается в том, что пользователю наших программ должно быть понятно, какие исходные данные требуются от него для ввода и какие результаты он получает в результате выполнения программ.

Профессор Талисманов

= команда присваивания в языке C++

:= оператор присваивания в Pascal

Ввод-вывод данных в языке C++ осуществляется либо с помощью функций ввода-вывода в стили C, либо с использованием библиотеки классов C++. Преимущество объектов C++ в том, что они легче в использовании, поэтому предлагаю рассмотреть именно их.
При подключении этого файла с помощью директивы
#include <iostream> в программе автоматически создаются виртуальные каналы связи cin для ввода с клавиатуры и cout для вывода на экран, а также операции помещения в поток << и чтения из потока >>. 

  • cin>>x; // в переменную x записывает некое значение, введенное с клавиатуры.

  • cin>>x>>y>>z; // вводит несколько переменных.​

 

cin>>a>>; cin>>b; - будет ждать ввода значений переменных а и b так:
5<Enter> 
6<Enter>

cin>>a>>b;

 При выполнении пользователь набирает на клавиатуре соответствующую последовательность значений, разделяя их пробелами и программа будет ждать ввода значений переменных а и b так:
5  6<Enter> ​

Операции ввода/вывода в языке Си организованы посредством библиотечных функций (причем их довольно много). Самый простой механизм ввода - чтение по одному символу из стандартного входного потока (с клавиатуры) с помощью функции getchar( ). 
 int getchar(void); Здесь определен тип единственного аргумента (void) и тип возвращаемого функцией значения (int).Оператор вида:

  • х = getchar( ); присваивает переменной х очередной вводимый символ. Переменная х должна иметь символьный или целый тип.

Другая функция - putchar(х) выдает значение переменной x в стандартный выходной поток (на экран дисплея). 

  • int putchar(int); Подключение осуществляется с помощью директивы препроцессора #include <stdio.h> помещаемой в начало программы.

Заметим, что для функции getchar( ) после выбора символа необходимо нажать клавишу <Enter>. Иногда это создает определенные неудобства.

Функции getch( ) и getche( ) устраняют их. Они имеют следующие прототипы:

  • int getch(void); int getche(void); Обе эти функции вводят символ сразу же после нажатия соответствующей клавиши (здесь не надо дополнительно нажимать клавишу <Enter>). Отличие между ними заключается в том, что getche( ) отображает вводимый символ на экране дисплея, а getch( ) - нет. Прототипы этих функций содержатся в файле conio.h (консольный ввод/вывод). Для их использования файл conio.h также следует подключить к программе с помощью директивы #include.

Важно!!! Количество форматов в строке должно быть равно количеству адресов переменных в списке. Кроме того, тип переменных должен совпадать с указанным.

В языке программирования Паскаль за ввод данных отвечает стандартные процедуры: ожидания ввода read, readLn - [читать, читать строку], а за вывод на экран отвечает оператор write - [пиши, пиши строку].

  • read; - процедура без параметров ждет нажатия клавиши <Enter> и переводит курсор на следующую строчку.

  • read(переменная [список переменных через запятую]); - процедура может считывать любое количество значений переменных, идентификаторы которых перечислены в круглых скобках через запятую и присваивать введенное .

  • readLn(переменная [список переменных через запятую]);

 

Readln(a); Readln(b); - будет ждать ввода значений переменных а и b так:
5<Enter> 
6<Enter>

 

Readln(a,b); - При выполнении этого оператора пользователь набирает на клавиатуре соответствующую последовательность значений, разделяя их пробелами и программа будет ждать ввода значений переменных а и b так:
5  6<Enter> ​

 

Важно!!! Помните, что все переменные указанные внутри процедуры Read и Write должны быть объявлены в блоке объявления данных VAR.
Тип данных, вводимых во время работы программы, должен соответствовать типу переменной, указанной в инструкции ввода.  В случае несоответствия типа введенных данных типу переменной, значение которой вводится с клавиатуры, программа завершает работу, и на экран выводится сообщение об ошибке ввода/вывода. 

"Есть еще команды для форматированного 

ввода/вывода в стиле Си " scanf("%s", address); printf("%s\n",address);

Профессор Mascot 

Форматированный

ввод и вывод

Для вывода данных на экран С++ использует объект cout и оператор <<

  • cout << переменная<< [список переменных через <<]; -Выводит значения переменных, идентификаторы которых указаны между <<;

  • cout << переменная<< [список переменных через <<]<<endl; - Выводит значения переменных, идентификаторы которых указаны между <<;

  • cout<<"Текст пояснения";    В кавычках можно писать все что угодно. Главное, чтобы пользователю было понятно, что от него требуется! 

  • cout << endl; - печатает на экране пустую строку и переводит курсор в начало следующей.

  • ​​​​​cout << a<<; -  выводит на экран значение переменной a и оставляет курсор на этой же строке прямо возле напечатанного значения.

  • ​​​​​cout <<"Computer № "<<a<< endl; - выводит на экран содержимое кавычек Computer № затем, значение переменной a и переводит курсор на следующую строку.

Computer № 5

  • cout <<"a="<<a<<"Чило b равно:"<<b<< endl;

a=5 Число b равно:6  
Для корректного их использования манипуляторов необходимо подключить библиотеку iomanip с помощью оператора #include <iomanip>

  • cout.width(n) — устанавливает ширину поля вывода -- n позиций;

  • cout.precision(10); — определяет m цифр в дробной части числа;

  • cout.setf(ios::flag1 | ios::flag2 | ios::flag3) - Флаги позволяют установить параметры ввода-вывода, которые будут действовать во всех последующих операторах ввода-вывода до тех пор, пока не будут отменены. Манипуляторы вставляются в операторы cin(cout) и устанавливают параметры текущего оператора ввода-вывода.

int r=-25;
cout.setf(ios::right);
cout.width(15);
cout<<"r="<<r<<endl; Выравнивание по правой границе, шириной вывода 15.                        r=-25
Подробнее о флагах и манипуляторах можно посмотреть здесь.

  • cerr – объект класса ostream, соответствующий стандартному выводу для ошибок. В этот поток мы направляем сообщения об ошибках программы.

  • setw - может управлять шириной вывода чисел.

cerr << "ошибка: введенная строка пуста!\n";

Модификатор вывода dec, oct и hex позволяют выводить числа в десятичном восьмеричном или шестнадцатеричном виде.
#include <iostream.h>
void main(void)

   cout << "Восьмеричный: " << oct << 10<< endl; 
   cout << "Шестнадцатеричный: " << hex << 10 << endl; 
   cout << "Десятичный: " << dec << 10 << endl; 
}
Восьмеричный: 12
Шестнадцатеричный: а
Десятичный: 10

ВАЖНО!!! С++. Важно!!! Надеюсь, вы заметили у объекта вывода модификатор<< endl; 

Это позволяет после вывода переместить курсор на следующую строку.

В Паскале для вывода информации используется процедура write.

  • write(переменная [список переменных через запятую]); - процедура выводит значения переменных, идентификаторы которых указанны с круглых скобках.

  • writeLn(переменная [список переменных через запятую][:число позиций][:точность - количество знаков после запятой]);

  • write( ' Текст пояснения ' ); В ремарках можно писать все что угодно. Главное, чтобы пользователю было понятно, что от него требуется! 

  • Writeln; - печатает на экране пустую строку и переводит курсор в начало следующей.

  • Write(a); - выводит на экран значение переменной a и оставляет курсор на этой же строке прямо возле напечатанного значения.

  • Writeln('Computer №',a); - выводит на экран содержимое кавычек Computer № затем, значение переменной a и переводит курсор на следующую строку.

Computer № 5

  • Writeln('a=',a,' Чило b равно: ',b); - выводит на экран

a=5 Число b равно:6  

  • Writeln('с=',с[:n:d]); - выводит на экран содержимое кавычек c= затем, значение вещественнойпеременной c в формате для дробного числа, где n-количествосимволов для вывода, d-точность (количество знаков после запятой) и переводит курсор на следующую строку.

Writeln('с=',с:3:2);   ​с=3.20
 Writeln('f=',f:3);   ​f=  3

ВАЖНО!!! PAS. Важно!!! Надеюсь, вы заметили у процедур ввода и вывода окончание Ln. Это позволяет после вывода переместить курсор на следующую строку.

"Ага-а-а-а! Можно запутаться со стрелочками <<" "Хотя, нет :-((( <<- такие операторы как бы выпускают данные, >> - наоборот входят" "cin - ключевое слово IN, а сout - ключевое слово OUT"

Профессор Талисманов

ЗАДАЧА

Найти сумму двух целых чисел введенных пользователем и вывести  результат на экран.

Пример программы С++:
#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

Пример программы 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

ЗАДАЧА

Найти стоимость яблок, если известны вес и цена яблок.

Пример программы для стиля Си:
#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 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> - расширенная библиотека управления консолью.

© 2014-2019 «ИНФОРМАТИКА».

665413, Россия, Иркутская область,

г. Черемхово, ул. Лермонтова, д.16, тел. (39546) 5-08-18
Муниципальная общеобразовательная организация ​" ​Лицей г. Черемхово "

  • Белая иконка facebook
  • Иконка Twitter с прозрачным фоном
  • белая иконка googleplus