Учебная работа. Лабораторная работа: Операторы ввода и вывода в языке программирования Си
1. Теоретические сведения
1.1 структура программки
Цель работы: изучить операторы ввода и вывода, форматы, применяемые в этих операторах. Оформить законченную программку с применением этих операторов.
В языке СИ неважно какая программка состоит из одной либо наиболее функций, задающих деяния, которые необходимо выполнить. Выполнение хоть какой программки начинается с функции main. Дальше идет текст программки, заключенный в фигурные скобки. Таковым образом, структура программки имеет вид:
main ( )
{
Тело программки
}
В самом ординарном случае функция main не имеет аргументов, потому в скобках ничего не содержится. Для работы программки, обеспечивающей ввод и вывод инфы, перед функцией main нужно поместить строчку:
#include <stdio.h>
1.2 Алфавит языка и типы данных
Алфавит языка включает латинские строчные и строчные буковкы, числа и особые знаки. К крайним относятся: . (точка), , (запятая), ‘ (апостроф), : (двоеточие) и др.
Принципиальным понятием языка является идентификатор, который употребляется в качестве имени объекта, к примеру, переменной, функции и т.п. Идентификатор может содержать до 32 знаков и состоит из букв и цифр, но начинается непременно с буковкы. Строчные буковкы различаются от строчных, потому идентификаторы SIGMA и sigma числятся различными.
В языке СИ существует несколько типов данных. Любой тип данных определяется одним из последующих главных слов:
1. int (целый) – задает значения, к которым относятся все целые числа. Спектр вероятных целых значений лежит в границах от –32768 до 32767, переменная типа int занимает 16 бит;
2. short (маленький целый) – надлежащие объекты не могут быть больше, чем int, переменные этого типа занимают 16 бит;
3. long (длиннющий целый) – надлежащие объекты не могут быть меньше, чем int. Переменная типа long занимает 32 бита и дозволяет представить целые числа от –2147483648 до 2147483647;
4. char (символьный) – задает значения, которые представляют разные знаки;
5. unsigned (беззнаковый) – в языке СИ можно объявлять некие типы (char, short, int, long) беззнаковыми при помощи модификатора unsigned (к примеру, unsigned short). Это означает, что надлежащие переменные не будут иметь отрицательных значений. В итоге они могут принимать огромные положительные значения, чем переменные знаковых типов. В случае типа int объявления вида «unsigned int a;» можно записать «unsigned a;»;
6. float (вещественный) – задает значения, к которым относятся вещественные числа, имеющие дробную часть, отделяемую точкой. Вещественные числа могут быть записаны также в экспоненциальной форме. к примеру, -1.58е+2 (что равно -1,58·102
). В языке СИ переменная типа float занимает 32 бита. Она может принимать значения в спектре от +3.4е-38 до +3.4е+38;
7. double (двойная точность) – описывает вещественные переменные, занимающие вдвое больше места, чем переменная типа float. Переменная типа double занимает 64 бита. Она может принимать значения в спектре от +1.7е-308 до +1.7е+308.
1.3 Ввод и вывод инфы
1.3.1 Форматный вывод
Сначала разглядим функцию, определяющую форматный вывод:
printf(«управляющая строчка», аргумент1, аргумент2, … );
Управляющая строчка содержит объекты 3-х типов: обыденные знаки, которые просто выводятся на экран монитора, спецификации преобразования, любая из которых вызывает вывод на экран значения еще одного аргумента из следующего перечня и управляющие символы-константы.
Любая спецификация преобразования начинается со знака % и завершается неким эмблемой, задающим преобразования.
знак преобразования связан с типом переменных. приведем знаки преобразования:
1) d – значением аргумента является десятичное целое число;
2) o – значением аргумента является восьмеричное целое число;
3) x – значением аргумента является шестнадцатеричное целое число;
4) c – значением аргумента является знак;
5) s – значением аргумента является строчка знаков;
6) e – значением аргумента является вещественное число в экспоненциальной форме;
7) f – значением аргумента является вещественное десятичное число с плавающей точкой;
8) u – значением аргумента является беззнаковое целое число;
9) p – значением аргумента является указатель (адресок).
Если опосля знака % записан не знак, то он выводится на экран. Функция printf употребляет управляющую строчку, чтоб найти, сколько всего аргументов и каковы их типы.
к примеру, в итоге работы программки получены переменная i, имеющая
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 целого типа, имеющей
Функция printf(“%2d”, S); выдает на экран:
336
В этом примере ширина поля ( она равна двум) меньше, чем число цифр в числе 336, потому поле автоматом расширяется до нужного размера.
Функция printf(“%6d”, S);
выдаст на экран:
_ _ _336
(6 позиций)
Другими словами, в итоге работы функции число сдвинуто к правому краю поля, а излишние позиции перед числом заполнены пробелами.
Функция printf(“%-6d”, S);
выдаст на экран:
336_ _ _
(6 позиций)
символ «минус» перед спецификацией приводит к сдвигу числа к левому краю поля.
Разглядим вывод вещественных чисел.
Если перед спецификацией f ничего не обозначено, то выводится число с шестью знаками опосля запятой. при печати числа с плавающей точкой перед спецификацией f тоже могут находиться числа.
Разглядим на определенном примере три вероятные ситуации:
%6f – печать числа с плавающей точкой в поле из 6 позиций;
%.2f – печать числа с плавающей точкой с 2-мя цифрами опосля десятичной точки;
%6.2f – печать числа с плавающей точкой в поле из 6 позиций и 2-мя цифрами опосля десятичной точки.
к примеру, в итоге работы программки получены переменные вещественного типа а=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
,
из которой следует, что в первом числе 3-я цифра опосля десятичной точки отброшена с округлением, т.к. указан формат числа с 2-мя цифрами опосля десятичной точки.
Если для вывода значений применена функция
printf(“%7.2f e”,a,b);
то будет выведена строчка:
_ _ _ 3.681.010000е+01
(7 позиций)
Так как для вывода значения переменной b использована спецификация е, то итог выдан в экспоненциальной форме. Необходимо подчеркнуть, что , если ширина поля меньше, чем число цифр в числе, то поле автоматом расширяется до нужного размера.
Как было отмечено выше, в управляющей строке могут содержаться управляющие символьные константы. Посреди управляющих символьных констант более нередко употребляются последующие:
1) a – для краткосрочной подачи звукового сигнала;
2) b – для перевода курсора на лево на одну позицию;
3) n – для перехода на новейшую строчку;
4) r – для перевода курсора в начало текущей строчки;
5) t – для горизонтальной табуляции;
6) v – для вертикальной табуляции.
Представим, в итоге работы программки переменная i получила значение 50. В итоге записи аннотации вызова функции
printf(“t ЭВМn%dn”,i);
поначалу выполнится горизонтальная табуляция (t), т.е. курсор сместится от края экрана на 8 позиций, потом на экран будет выведено слово “ЭВМ ”, опосля этого курсор переместится в начало последующей строчки (n), потом будет выведено целое работы данной нам функции на дисплее будет иметь вид:
_ _ _ _ _ _ _ _ ЭВМ
50
1.3.2 Ввод данных
Для форматного ввода данных употребляется функция
scanf(«управляющая строчка», аргумент1, аргумент2,…);
Если в качестве аргумента употребляется переменная, то перед ее именованием записывается знак &.
Управляющая строчка содержит спецификации преобразования и употребляется для установления количества и типов аргументов. спецификации для определения типов аргументов такие же, как и для функции printf. Перед знаками d,o,x,f может стоять буковка l. В первых 3-х вариантах надлежащие переменные обязаны иметь тип long, а в крайнем double.
Разглядим пример. Требуется ввести значения для переменных i (целого типа) и a (вещественного типа). Эту задачку выполнит функция:
scanf(“%d%f”,&i,&a);
В управляющей строке спецификации 3-х типов могут быть разделены друг от друга разными знаками, в том числе и пробелом. Как следует, при занесении значений переменных нужно применять обозначенный разделитель. Если спецификации не разделены одна от иной никакими значениями, то значения переменных заносятся через пробел.
В языке СИ есть две весьма комфортные функции puts и gets, дозволяющие вводить и выводить строчку знаков. Пример их использования показан ниже:
#include<stdio.h>
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,
переменная а получит
Обширное распространение находят также выражения с еще одной нестандартной терпарной операцией ?: . В выражении
у=х?а:b,
у=а, если х не равно нулю, и у=b, если х равно нулю. Последующее выражение
у=(а>b)?a:b;
дозволяет присвоить переменной y
В таблице 2 приведены некие функции, используемые при программировании на СИ.
Таблица 2
Математическая запись
Запись на языке СИ
| X |
int абс(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)
√X
double sqrt(double X)
XY
double pow(double X, double Y)
Перед аргументом и функцией указан допустимый тип (при программировании эта запись типа опускается).
В программках на языке СИ принципиальная роль отводится комментариям, которые увеличивают наглядность и удобство чтения программ. Они могут быть записаны в любом месте программки и обрамляются знаками /* и */.
Разглядим пример программки на языке СИ.
Требуется вычислить:
Для работы с математическими функциями нужно перед функцией main поместить строчку:
#include <math.h>
программка на СИ имеет вид:
#include <stdio.h>
#include <math.h>
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*/
}
Следует направить внимание на то, что при вычислении переменной с, выражение, стоящее в правой части, представлено как 5
√(d+ex
), потому использована функция pow. Очередное замечание. Следует осторожно подступать к делению целых чисел. Если оба операнда целые, то итог тоже будет целым, а дробная часть отбрасывается. таковым образом, при выполнении операции 1/5, итог будет равен нулю. Для того чтоб сохранить дробную часть, хотя бы один из операндов должен быть вещественным. Это условие выполнено при вычислении 1./5 .
Из таблицы 3 взять задание по варианту и написать программку для вычисления выражения на языке СИ.
Таблица 3
№ варианта
Задание
Начальные данные
1
c = sin2
(x + y) – ln x
;
b = | i – j 3
|
;
, где
x = 4,5
y = 8,5
i = 3
j = 6
2
d = | i2
– m|
a = sin3
( 2 + n )
, где
n = 10,2
x = 4,3
i = 5
m = 2
3
b = | x2
+ y |
, где
m = 8,1
w = 4,2
x = 10
y = 4
4
a = | k + m2
|
, где
x = cos2
(t + p) – e2t
t = 4,7
z = 0,8
p = 6,2
k = – 4
m = 6
5
d = | j3
– i2
|
EMBED Equation.3
, где
t = 4,1
p = 3,2
w = 8,7
j = 3
i = 7
6
f = | k2
+ m3
|
t = ln x2
+ sin2
y
, где
x = 5,7
y = 1,9
k = 8
m = 2
7
x = sin e2m
, где
m = 5,6
n = 9,4
i = 4
j = 9
8
y = tg2
q – 4p
, где
q = 1,7
p = 2,3
i = 9
j = 4
9
y = sin2
( n + m )
, где
n = 2,6
m = 3,7
p = 6
k = 2
10
y = sin(p2
+t)
, где
t = 1,1
p = 2,4
k = 4
i = 5
11
t = log2
(x + y)
, где
x = 3,7
y = 2,1
i = 3
j = 4
12
c = tg2
(t+p) + sin p2
, где
t = 1,5
p = 4,8
i = 2
m = 6
13
, где
z = 2,4
m = 5,8
n = 4
j = 5
14
h = sin (tg x2
)
, где
x = 9,5
y = 3,6
j = 2
i = 5
15
a = cos2
(x+y)
, где
c
a + b2
d =
x = 6,4
y = 1,7
k = 5
m = 7
Литература
1. Подбельский В.В. язык Cu ++: Учебное пособие. — М.: Деньги и статистика,1995, — 560 с.
2. Страуструп Б. язык программирования Сг ++. — М.: Радио и связь, 1991. — 352 стр.
3. Собоцинский В.В. Практический курс Turbo Cu ++. Базы объктно- нацеленного программирования. — М.: свет, 1993. — 236 с.
4. Романов В.Ю. Программирование на языке Cu ++. Практический подход. — М.: Компьтер, 1993. — 160 с.
5. Уинер Р. язык турбо Cu . — М.: Мир, 1991. — 384 с.
6. Юлин В.А., Булатова И.Р. Приглашение к Cu. — Мн.: Высш. Шк., 1990,- 224 с.
7.
Котлинская Г.П., Галиновский О.И. Программирование на языке Cu. -Мн.: Высш. Шк., 1991. — 156 с.
]]>