Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Ввод/вывод информации на экран

Поиск

 

Система ввода/вывода Си++ действует через так называемые потоки (streams). Поток ввода/вывода – это логическое устройство, которое выдает и принимает пользовательскую информацию. Образно говоря потоки ввода/вывода – это органы чувств программы. Как у человека есть уши, чтобы слышать и голосовые связки, чтобы говорить, так и у программы есть поток ввода для получения информации извне и поток вывода для записи информации во внешнее устройство, например, на экран.

Поток связан с физическим устройством с помощью системы ввода/вывода Си++. Поскольку все потоки ввода/вывода действуют одинаково, то, несмотря на то, что программисту приходится работать с совершенно разными по характеристикам устройствами, система ввода/вывода предоставляет для этого единый удобный интерфейс. Например, функция, которая используется для записи информации на экран монитора, вполне подойдет как для записи в файл, так и для вывода на принтер.

Если программа на Си++ начинает выполняться, открываются четыре потока:

 

Поток Значение Устройство ввода/вывода по умолчанию
cin Стандартный ввод Клавиатура
cout Стандартный вывод Экран
cerr Стандартная ошибка Экран
clog Буферизуемая версия cerr Экран

 

В дальнейшем нас пока будут интересовать потоки cin, cout.

Для использования стандартных функций ввода/вывода вам необходимо подключить к вашей программе библиотеку iostream. Собственно ввод/вывод осуществляется в Си++ двумя операторами: << и >>.

С помощью оператора вывода << можно вывести данные любого базового типа Си++. Вот некоторые примеры.

 

cout << “Эта строка выводится на экран.\n”

 

cout << 100.99;

 

Для считывания значения с клавиатуры, используйте оператор ввода >>. Например, в этом фрагменте целая величина вводится в num.

 

int num.

cin >> num;

 

Рассмотрим несколько вариантов использования приведенных операторов ввода/вывода.

 

Листинг 2

/*Программа вывода строки, двух целых

чисел и одного числа с плавающей запятой*/

 

#include <iostream.h> // Подключение стандартной

// библиотеки ввода/вывода

 

void main(void)

{

int i, j; // Объявление трех переменных

double d; // i, j, d

i = 10; //

j = 20; // Их инициализация

d = 99.101; //

 

// Вывод данных на экран

cout << “Вот несколько чисел: ”;

cout << i;

cout << ‘ ‘;

cout << j;

cout << ‘ ‘;

cout << d

}

 

 

Ниже представлен результат работы программы.

 

Вот несколько чисел: 10 20 99.101

 

В одном выражении ввода/вывода можно выводить более одной величины. Например, программу представленную в листинге 2 можно модифицировать следующим образом:

 

Листинг 3

/*Модифицированная программа вывода строки,

двух целых чисел и одного числа с плавающей запятой*/

 

#include <iostream.h> // Подключение стандартной

// библиотеки ввода/вывода

 

void main(void)

{

int i, j; // Объявление трех переменных

double d; // i, j, d

i = 10; //

j = 20; // Их инициализация

d = 99.101; //

 

// Вывод данных на экран

cout << “Вот несколько чисел: ” << i << ‘ ‘ << j << ‘ ‘ << d;

}

 

 

Результат ее работы будет точно таким же, как и для предыдущей программы.

В листинге 4 представлен пример программы, позволяющей пользователю вводить число.

 

 

Листинг 4

/*Программа, позволяющая осуществить ввод одного числа*/

 

#include <iostream.h> // Подключение стандартной

// библиотеки ввода/вывода

 

void main(void)

{

int i; // Объявление переменной

cout << “Введите число: ”;

cin >> i;

cout << “Вот ваше число: ” << i << “\n”;

}

 

 

В ряде случаев у вас может возникать задача вывода данных в заданном формате. Для этого можно использовать функцию printf(). Так как printf() не является встроенным элементом языка Си++, то до запуска программы к ней необходимо с помощью оператора #include подключить файл-заголовок, содержащий описание функции printf(). В данном случае это файл stdio.h.

Мы уже использовали функцию printf() ранее (см. листинг 1) и теперь рассмотрим ее более подробно.

 

Прототип:

int printf(const char * format [, argument ] ... );

Описание:

Осуществляет форматированный вывод.

Параметры:

format – форматная строка;

argument – последовательность аргументов.

Возвращаемое значение:

Каждый вызов этой функции возвращает количество напечатанных символов, либо отрицательное значение в случае возникновения ошибки.

Объявлен в файле-заголовке:

stdio.h

Пример использования:

 

printf(“One string”);

Вывод:

One string

 

printf(“%s %s”, “One”, “string”);

Вывод:

One string

 

printf(“%s\n%s”, “Two”, “string”);

Вывод:

Two

string

 

printf(“[%d: %d]”, 1, 0);

Вывод:

[1: 0]

 

Форматная строка содержит два вида объектов: обычные символы, копируемые на экран, и спецификации преобразования, которые вызывают преобразование и печать остальных аргументов в том порядке, как они перечислены. Каждая спецификация преобразования начинается с % и заканчивается символом-спецификатором преобразования.

В общем случае спецификация преобразования имеет следующий вид:

% [флаги] [ширина] [. точность] [{ h | l | I64 | L }]тип

 

Подробное описание всех параметров спецификации вы можете найти в приложении В 1.2 конспекта лекций. Мы же будем использовать упрощенный вариант спецификации:

% тип

 

Символы-спецификаторы и разъяснение их смысла приведены в таблице 1. Если за % нет правильного символа-спецификатора, результат не определен.

 

Таблица 1. Преобразования printf

Символ Тип аргумента; вид печати
d, i int; знаковая десятичная запись
o unsigned int; беззнаковая восьмеричная запись (без 0 слева)
x, X unsigned int; беззнаковая шестнадцатеричная запись (без 0x или 0X слева), в качестве цифр от 10 до 15 используются abcdef для x и ABCDEF для X
u unsigned int; беззнаковое десятичное целое
c int; единичный символ после преобразования в unsigned char
s char *; символы строки печатаются, пока не встретится '\0' или не исчерпается количество символов, указанное точностью
f double; десятичная запись вида [-]mmm.ddd, где количество d специфицируется точностью. По умолчанию точность равна 6; нулевая точность подавляет печать десятичной точки
e, E double; десятичная запись вида [-]m.dddddde±xx или запись вида [-]m.ddddddE±xx, где количество d специфицируется точностью. По умолчанию точность равна 6; нулевая точность подавляет печать десятичной точки
g, G double; используется %e и %E, если порядок меньше -4 или больше или равен точности; в противном случае используется %f. Завершающие нули и точка в конце не печатаются
p void *; печатает в виде указателя (представление зависит от реализации
n int *; число символов, напечатанных к данному моменту данным вызовом printf, записывается в аргумент. Никакие другие аргументы не преобразуются
% никакие аргументы не преобразуются; печатается %

 

Чаще всего на печать мы выводим числа и строки. Поэтому из представленного выше списка для вас являются важными символы-спецификаторы d, g и s.

Символ То, что выводится на экран Пример
d целое число printf(“%d”, 5);
g вещественное число (с плавающей запятой) printf(“%g”, 5.00);
s строка printf(“%s”, “fine!”);

 

Пример

Рассмотрим следующий вызов функции printf():

 

printf(“I am %s\n %d: %d\n”, “fine!”, 1, 0);

 

В результате выполнения данной строки на экране выведется:

 

I am fine!

1: 0

 

Форматная строка начинается со слов «I am». Так как, перед этими словами нет «%», они выводятся на экран без каких-либо преобразований. Далее следуют символы «%s». Они означают, что следует вывести в виде последовательности символов переданный аргумент «fine!». Следует отметить, что символ «\n» следующий далее в форматной строке не относятся к символам-спецификаторам форматной строки. Это специальный символ, используемый при выводе текстовой информации. В таблице 2 приведено описание некоторых специальных символов.

 

Таблица 2. Некоторые специальные символы

Символ Назначение
\n Новая строка
\t Табуляция
\’ Одинарная кавычка
\” Двойная кавычка
\\ Обратный слеш
\? Вопросительный знак

 

Таким образом, символ «\n» говорит о необходимости начать новую строку. Далее в форматной строке заданы символы «%d: %d». Они говорят о том, что следующие аргументы (в данном случае 1 и 0) являются целыми числами и их следует вывести на экран, разделив последовательностью символов «:». Заканчивается форматная строка еще одним символом «\n».

 

Генератор случайных чисел

 

Многие задачи лабораторного практикума требуют ввода различных исходных данных. В случае, когда надо ввести одно два числа это можно осуществить вручную. Но если требуется ввести в качестве исходных данных большое количество чисел, например, матрицу, целесообразно использовать генератор случайных чисел.

Для работы с генератором случайных чисел Си++ предоставляет две функции: srand() и rand() описанные в библиотеке stdlib.

Перед началом работы генератор случайных чисел необходимо проинициализировать. Для этого надо вызвать функцию srand() с любым целым положительным аргументом.

Каждый вызов функции rand() позволяет получить целое случайное число в диапазоне от 0 до величины RAND_MAX. Численное значение этой величины нас не интересует. В листинге 5 представлен пример программы печатающей на экране два случайных числа.

 

Листинг 5

/*Программа вывода на экране двух случайных

чисел при постоянном аргументе функции srand ()*/

 

#include <iostream.h> // Подключение стандартной

// библиотеки ввода/вывода

# include <stdlib.h> // Подключение библиотеки содержащей

// описание функций srand() и rand()

 

void main(void)

{

srand (2); // Инициализация генератора

// Вывод на экран случайных чисел

cout << rand() << ‘\n’;

cout << rand() << ‘\n’;

}

 

 

Обратите внимание на то, что при каждом вызове программы (листинг 5) вы получаете одинаковую последовательность чисел. Это связано с тем, что мы инициализируем генератор случайных чисел одним и тем же числом srand(2). Если вы желаете получать каждый раз другую последовательность, то вам надо соответственно менять значение аргумента функции srand() при каждом новом запуске программы. Для этого можно, например, использовать системные часы. В листинге 6 представлен модифицированный вариант программы печатающей два случайных числа.

 

Листинг 6

/*Программа вывода на экране двух случайных

чисел при случайном аргументе функции srand ()*/

 

#include <iostream.h> // Подключение стандартной

// библиотеки ввода/вывода

# include <stdlib.h> // Подключение библиотеки содержащей

// описание функций srand() и rand()

# include <time.h> // Подключение библиотеки содержащей

// описание функций работы с системными часами

void main(void)

{

srand ((unsigned) time(NULL)); // Инициализация генератора

// Вывод на экран случайных чисел

cout << rand() << ‘\n’;

cout << rand() << ‘\n’;

}

 

 

Теперь при каждом вызове программы вы будете получать новую последовательность чисел.

 

 


Задание к лабораторной работе

 

Набрать, откомпилировать и запустить следующие программы:

 

Листинг 7

/*Вывод с использованием функции printf()*/

 

#include <stdio.h>

void main(void)

{

printf(“I love \” Algorithmization and programming!\”\n”);

}

 

 

Листинг 8

/*Вывод с использованием оператора <<*/

 

#include <iostream.h>

void main(void)

{

cout << “I love\n”;

cout << “\”Algorithmization and programming!”\n”);

}

 

 

Листинг 9

/*Форматированный вывод с использованием функции printf()

Программа выводит: фамилию, имя, группу и порядковый

номер по списку*/

 

#include <stdio.h>

void main(void)

{

printf(“I am %s\nGroup: %s\nOrder number: %d\n”, “Ivanov Ivan”, “TA-0113”, 1);

}

 

 

Примечание! В программе представленной в листинге 9, каждый студент должен вписать свои данные.

 

Листинг 10

/*Ввод/вывод с использованием операторов << >>

программа ожидает ввода элементов матрицы 2х2,

а затем выводит матрицу на экран*/

 

#include <iostream.h>

void main(void)

{

int a, b, c, d;

cout << "Input elements\n";

cin >> a >> b >> c >> d;

cout << “Matrix 2x2\n”;

cout << a << ‘\t’ << b << ‘\n’;

cout << c << ‘\t’ << d << ‘\n’;

}

 

 

После запуска данной программы на экране появляется строка:

 

Input elements

 

Далее вам необходимо ввести четыре целых числа. Ввод очередного числа завершается нажатием клавиши Enter.

 

Листинг 11

/*Модифицированный вариант программы листинг 10.

Элементы матрицы формируются при помощи генератора

случайных чисел*/

 

#include <iostream.h>

# include <stdlib.h>

# include <time.h>

void main(void)

{

srand ((unsigned) time(NULL));

int a, b, c, d;

a = rand();

b = rand();

c = rand();

d = rand();

cout << “Matrix 2x2\n”;

cout << a << ‘\t’ << b << ‘\n’;

cout << c << ‘\t’ << d << ‘\n’;

}

 

 

В протоколе необходимо привести листинги всех набранных программ. Каждый листинг должны быть снабжен комментариями.


Контрольные вопросы

 

1) Вы хотите создать проект. Ваши действия?

2) Вы написали программу и хотите ее откомпилировать. К сожалению, программа содержит ошибки. Ваши действия?

3) Вы добились безошибочной компиляции вашей программы. Теперь вы хотите запустить ее и просмотреть результат ее работы. Ваши действия?

4) При помощи чего осуществляется ввод/вывод информации?

5) Зачем нужны библиотеки и как они подключаются к программе?

6) Вы хотите использовать в программе генератор случайных чисел. Ваши действия?

 


Лабораторная работа №2

 

Цель: Изучить возможности выполнения арифметических и логических вычислений с использованием языка Си++.

 

Задачи:

1) Разработать программу, решающую задачу из области арифметики.

2) Разработать программу, использующую разветвления.

3) Разработать программу, использующую цикл.

 

 



Поделиться:


Последнее изменение этой страницы: 2016-07-16; просмотров: 455; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.128.31.76 (0.011 с.)