Учебная работа. Лабораторная работа: Операторы ввода и вывода в языке программирования Си

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Контрольные рефераты

Учебная работа. Лабораторная работа: Операторы ввода и вывода в языке программирования Си

Лабораторная №1 “Операторы ввода и вывода в языке программирования Си++”

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 с.

]]>