Операторы ввода и вывода в языке программирования Си++
Сначала выполнится горизонтальная табуляция (t), т. е. курсор сместится от края экрана на 8 позиций, затем на экран будет выведено слово «ЭВМ», после этого курсор переместится в начало следующей строки (n), затем будет выведено целое значение i по формату d, и окончательно курсор перейдет в начало новой строки (n). Таким образом, результат работы этой функции на экране будет иметь вид… Читать ещё >
Операторы ввода и вывода в языке программирования Си++ (реферат, курсовая, диплом, контрольная)
Лабораторная № 1 «Операторы ввода и вывода в языке программирования Си++».
1. Теоретические сведения.
1.1 Структура программы.
Цель работы: изучить операторы ввода и вывода, форматы, используемые в этих операторах. Оформить законченную программу с применением этих операторов.
В языке СИ любая программа состоит из одной или более функций, задающих действия, которые нужно выполнить. Выполнение любой программы начинается с функции main. Далее идет текст программы, заключенный в фигурные скобки. Таким образом, структура программы имеет вид:
main ().
{.
Тело программы.
}.
В самом простом случае функция main не имеет аргументов, поэтому в скобках ничего не содержится. Для работы программы, обеспечивающей ввод и вывод информации, перед функцией main необходимо поместить строку:
#include.
1.2 Алфавит языка и типы данных.
Алфавит языка включает латинские прописные и строчные буквы, цифры и специальные знаки. К последним относятся:. (точка),, (запятая), ` (апостроф),: (двоеточие) и др.
Важным понятием языка является идентификатор, который используется в качестве имени объекта, например, переменной, функции и т. п. Идентификатор может содержать до 32 символов и состоит из букв и цифр, но начинается обязательно с буквы. Строчные буквы отличаются от прописных, поэтому идентификаторы SIGMA и sigma считаются разными.
В языке СИ существует несколько типов данных. Каждый тип данных определяется одним из следующих ключевых слов:
int (целый) — задает значения, к которым относятся все целые числа. Диапазон возможных целых значений лежит в пределах от -32 768 до 32 767, переменная типа int занимает 16 бит;
short (короткий целый) — соответствующие объекты не могут быть больше, чем int, переменные этого типа занимают 16 бит;
long (длинный целый) — соответствующие объекты не могут быть меньше, чем int. Переменная типа long занимает 32 бита и позволяет представить целые числа от -2 147 483 648 до 2 147 483 647;
char (символьный) — задает значения, которые представляют различные символы;
unsigned (беззнаковый) — в языке СИ можно объявлять некоторые типы (char, short, int, long) беззнаковыми с помощью модификатора unsigned (например, unsigned short). Это значит, что соответствующие переменные не будут иметь отрицательных значений. В результате они могут принимать большие положительные значения, чем переменные знаковых типов. В случае типа int объявления вида «unsigned int a;» можно записать «unsigned a;»;
float (вещественный) — задает значения, к которым относятся вещественные числа, имеющие дробную часть, отделяемую точкой. Вещественные числа могут быть записаны также в экспоненциальной форме. Например, -1.58е+2 (что равно -1,58· 102). В языке СИ переменная типа float занимает 32 бита. Она может принимать значения в диапазоне от +3.4е-38 до +3.4е+38;
double (двойная точность) — определяет вещественные переменные, занимающие в два раза больше места, чем переменная типа float. Переменная типа double занимает 64 бита. Она может принимать значения в диапазоне от +1.7е-308 до +1.7е+308.
1.3 Ввод и вывод информации.
1.3.1 Форматный вывод.
Вначале рассмотрим функцию, определяющую форматный вывод:
printf («управляющая строка», аргумент1, аргумент2, …);
Управляющая строка содержит объекты трех типов: обычные символы, которые просто выводятся на экран дисплея, спецификации преобразования, каждая из которых вызывает вывод на экран значения очередного аргумента из последующего списка и управляющие символы-константы.
Каждая спецификация преобразования начинается со знака % и заканчивается некоторым символом, задающим преобразования.
Символ преобразования связан с типом переменных. приведем символы преобразования:
d — значением аргумента является десятичное целое число;
o — значением аргумента является восьмеричное целое число;
x — значением аргумента является шестнадцатеричное целое число;
c — значением аргумента является символ;
s — значением аргумента является строка символов;
e — значением аргумента является вещественное число в экспоненциальной форме;
f — значением аргумента является вещественное десятичное число с плавающей точкой;
u — значением аргумента является беззнаковое целое число;
p — значением аргумента является указатель (адрес).
Если после знака % записан не символ, то он выводится на экран. Функция printf использует управляющую строку, чтобы определить, сколько всего аргументов и каковы их типы.
Например, в результате работы программы получены переменная i, имеющая значение 100, и переменная j, имеющая значение 25. Обе переменные целого типа. Для вывода этих переменных на экран в виде.
i=100 j=25.
необходимо применить функцию.
printf («i=%d j=%d», i, j);
Как было описано выше, в кавычках задается формат вывода. перед знаком % записываются символы, которые будут непосредственно выданы на экран. После знака % применена спецификация d, т.к. переменные i и j имеют целый тип. Сами i и j приведены через запятую в списке аргументов. Если результат должен быть представлен в виде.
i=100; j=25.
необходимо применить функцию.
printf («i=%d; j=%d, i, j);
Если после знака % стоит цифра, то она задает поле, в котором будет выполнен вывод числа. Приведем несколько функций printf, которые будут обеспечивать вывод одной и той же переменной S целого типа, имеющей значение 336.
Функция printf («%2d», S); выдает на экран:
В этом примере ширина поля (она равна двум) меньше, чем число цифр в числе 336, поэтому поле автоматически расширяется до необходимого размера.
Функция printf («%6d», S);
выдаст на экран:
_ _ _336.
(6 позиций) То есть, в результате работы функции число сдвинуто к правому краю поля, а лишние позиции перед числом заполнены пробелами.
Функция printf («%-6d», S);
выдаст на экран:
336_ _ _.
(6 позиций) Знак «минус» перед спецификацией приводит к сдвигу числа к левому краю поля.
Рассмотрим вывод вещественных чисел.
Если перед спецификацией f ничего не указано, то выводится число с шестью знаками после запятой. при печати числа с плавающей точкой перед спецификацией f тоже могут находиться цифры.
Рассмотрим на конкретном примере три возможные ситуации:
%6f — печать числа с плавающей точкой в поле из шести позиций;
%.2f — печать числа с плавающей точкой с двумя цифрами после десятичной точки;
%6.2f — печать числа с плавающей точкой в поле из шести позиций и двумя цифрами после десятичной точки.
Например, в результате работы программы получены переменные вещественного типа а=3,687 и b=10,17.
Если для вывода значений использована функция.
printf («%7f %8f», a, b);
то результат будет представлен в виде строки:
_ _ 3.687 _ _ _ _10.17.
(7 поз.) (8 позиций) Как видно из примера, лишние позиции заполняются пробелами. Если для вывода значений использована функция.
printf («%.2f %/2f», a, b);
то результатом будет строка:
3.69 10.17,.
из которой следует, что в первом числе третья цифра после десятичной точки отброшена с округлением, т.к. указан формат числа с двумя цифрами после десятичной точки.
Если для вывода значений использована функция.
printf («%7.2f e», a, b);
то будет выведена строка:
_ _ _ 3.681.10 000е+01.
(7 позиций) Поскольку для вывода значения переменной b применена спецификация е, то результат выдан в экспоненциальной форме. Следует отметить, что, если ширина поля меньше, чем число цифр в числе, то поле автоматически расширяется до необходимого размера.
Как было отмечено выше, в управляющей строке могут содержаться управляющие символьные константы. Среди управляющих символьных констант наиболее часто используются следующие:
a — для кратковременной подачи звукового сигнала;
b — для перевода курсора влево на одну позицию;
n — для перехода на новую строку;
r — для перевода курсора в начало текущей строки;
t — для горизонтальной табуляции;
v — для вертикальной табуляции.
Предположим, в результате работы программы переменная i получила значение 50. В результате записи инструкции вызова функции.
printf («t ЭВМn%dn», i);
сначала выполнится горизонтальная табуляция (t), т. е. курсор сместится от края экрана на 8 позиций, затем на экран будет выведено слово «ЭВМ», после этого курсор переместится в начало следующей строки (n), затем будет выведено целое значение i по формату d, и окончательно курсор перейдет в начало новой строки (n). Таким образом, результат работы этой функции на экране будет иметь вид:
_ _ _ _ _ _ _ _ ЭВМ.
1.3.2 Ввод данных.
Для форматного ввода данных используется функция.
scanf («управляющая строка», аргумент1, аргумент2,…);
Если в качестве аргумента используется переменная, то перед ее именем записывается символ &.
Управляющая строка содержит спецификации преобразования и используется для установления количества и типов аргументов. спецификации для определения типов аргументов такие же, как и для функции printf. Перед символами d, o, x, f может стоять буква l. В первых трех случаях соответствующие переменные должны иметь тип long, а в последнем double.
Рассмотрим пример. Требуется ввести значения для переменных i (целого типа) и a (вещественного типа). Эту задачу выполнит функция:
scanf («%d%f»,&i,&a);
В управляющей строке спецификации трех типов могут быть отделены друг от друга различными знаками, в том числе и пробелом. Следовательно, при занесении значений переменных необходимо использовать указанный разделитель. Если спецификации не отделены одна от другой никакими значениями, то значения переменных заносятся через пробел.
В языке СИ есть две очень удобные функции puts и gets, позволяющие вводить и выводить строку символов. Пример их использования показан ниже:
#include.
main ().
{.
char q[40]; /*объявление строки символов*/.
puts («Введите строку символов»);
gets (q); /*ввод строки символов*/.
puts (q); /*вывод строки символов*/.
}.
В результате работы программы вначале на экране появится текст:
Введите строку символов,.
после чего следует ввести какую-либо строку символов. Эта информация при помощи оператора gets будет присвоена элементам символьного массива q. Оператор puts выведет строку символов.
1.4 Операторы и выражения.
Выражения широко используются в программах на языке СИ и представляют собой формулы для вычисления переменных. Они состоят из операндов (переменные, константы и др.), соединенных знаками операций (сложение, вычитание, умножение и др.). Порядок выполнения при вычислении значения выражения определяется их приоритетами и может регулироваться с помощью круглых скобок. Наиболее часто арифметические выражения используются в операторе присваивания. Этот оператор заменяет значение переменной в левой части оператора на значение выражения, стоящего в правой части, и имеет следующую форму:
переменная = выражение;
В языке СИ может быть использован модификатор const, запрещающий какие бы то ни было переопределения константы: ее уменьшение, увеличение и т. п. Модификатор const, используемый отдельно, эквивалентен const int. Приведем примеры:
const float a=3.5;
const j=47;
В таблице 1 приведены арифметические операции, используемые в языке СИ.
Таблица 1.
Знак операции. | Выполнение действия. | |
Сложение. | ||
; | Вычитание. | |
*. | Умножение. | |
Деление. | ||
%. | Деление по модулю. | |
Результатом деления по модулю является остаток от деления. Например, если b=5, c=2, то при выполнении операции а=b%c,.
переменная, а получит значение 1.
Широкое распространение находят также выражения с еще одной нетрадиционной терпарной операцией ?:. В выражении у=х?а:b,.
у=а, если х не равно нулю, и у=b, если х равно нулю. Следующее выражение у=(а>b)?a:b;
позволяет присвоить переменной y значение большей переменной (а или b), т. е. y=max (a, b).
В таблице 2 приведены некоторые функции, применяемые при программировании на СИ.
Таблица 2.
Математическая запись. | Запись на языке СИ. | |
| X |. | int abs (int X). | |
| X |. | float fabs (float X). | |
arccos X. | double acos (double X). | |
arcsin X. | double asin (double X). | |
arctg X. | double atan (double X). | |
cos X. | double cos (double X). | |
sin X. | double sin (double X). | |
tg X. | double tan (double X). | |
eX. | double exp (double X). | |
ln X. | double log (double X). | |
log X. | double log10(double X). | |
vX. | double sqrt (double X). | |
XY. | double pow (double X, double Y). | |
Перед аргументом и функцией указан допустимый тип (при программировании эта запись типа опускается).
В программах на языке СИ важная роль отводится комментариям, которые повышают наглядность и удобство чтения программ. Они могут быть записаны в любом месте программы и обрамляются символами /* и */.
Рассмотрим пример программы на языке СИ.
Требуется вычислить:
Для работы с математическими функциями необходимо перед функцией main поместить строку:
#include.
Программа на СИ имеет вид:
#include.
#include.
main ().
{.
float z, f, k; /*объявление вещественных переменных z, f, k*/.
double y, a, b, c, d, x; /*объявление переменных y, a, b, c, d, x переменными двойной точности*/.
scanf («%f %f %f %lf %lf», &z, &f, &k, &d, &x); /* ввод с клавиатуры переменных z, f, k, d, x*/.
a=log (x)+(z+f)/k;
b=sin (x)+tan (x);
c=pow (d+exp (x), 1./5);
y=(a+b)/c;
printf («%lf %lf %ef %lf», a, b, c, y); /*вывод на экран значений переменных a, b, c, y*/.
}.
Следует обратить внимание на то, что при вычислении переменной с, выражение, стоящее в правой части, представлено как 5v (d+ex), поэтому применена функция pow. Еще одно замечание. Следует осторожно подходить к делению целых чисел. Если оба операнда целые, то результат тоже будет целым, а дробная часть отбрасывается. таким образом, при выполнении операции 1/5, результат будет равен нулю. Для того чтобы сохранить дробную часть, хотя бы один из операндов должен быть вещественным. Это условие выполнено при вычислении 1./5 .
Из таблицы 3 взять задание по варианту и написать программу для вычисления выражения на языке СИ.
Таблица 3.
№ варианта. | Задание. | Исходные данные. | |
x = 4,5. y = 8,5. i = 3. j = 6. | |||
n = 10,2. x = 4,3. i = 5. m = 2. | |||
m = 8,1. w = 4,2. x = 10. y = 4. | |||
t = 4,7. z = 0,8. p = 6,2. k = - 4. m = 6. | |||
t = 4,1. p = 3,2. w = 8,7. j = 3. i = 7. | |||
x = 5,7. y = 1,9. k = 8. m = 2. | |||
m = 5,6. n = 9,4. i = 4. j = 9. | |||
q = 1,7. p = 2,3. i = 9. j = 4. | |||
n = 2,6. m = 3,7. p = 6. k = 2. | |||
t = 1,1. p = 2,4. k = 4. i = 5. | |||
x = 3,7. y = 2,1. i = 3. j = 4. | |||
t = 1,5. p = 4,8. i = 2. m = 6. | |||
z = 2,4. m = 5,8. n = 4. j = 5. | |||
x = 9,5. y = 3,6. j = 2. i = 5. | |||
x = 6,4. y = 1,7. k = 5. m = 7. | |||
Подбельский В. В. Язык Cu ++: Учебное пособие. — М.: Финансы и статистика, 1995, — 560 с.
Страуструп Б. Язык программирования Сг ++. — М.: Радио и связь, 1991. — 352 стр.
Собоцинский В. В. Практический курс Turbo Cu ++. Основы объктноориентированного программирования. — М.: Свет, 1993. — 236 с.
Романов В. Ю. Программирование на языке Cu ++. Практический подход. — М.: Компьтер, 1993. — 160 с.
Уинер Р. Язык турбо Cu. — М.: Мир, 1991. — 384 с.
Юлин В.А., Булатова И. Р. Приглашение к Cu. — Мн.: Высш. Шк., 1990, — 224 с.
Котлинская Г. П., Галиновский О. И. Программирование на языке Cu. -Мн.: Высш. Шк., 1991. — 156 с.