РефератыИнформатикаОпОператоры ввода и вывода в языке программирования Си

Операторы ввода и вывода в языке программирования Си

Лабораторная №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, ... );


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


Каждая спецификация преобразования начинается со знака % и заканчивается некоторым символом, задающим преобразования.


Символ преобразования связан с типом переменных. приведем символы преобразования:


1) d – значением аргумента является десятичное целое число;


2) o – значением аргумента является восьмеричное целое число;


3) x – значением аргумента является шестнадцатеричное целое число;


4) c – значением аргумента является символ;


5) s – значением аргумента является строка символов;


6) e – значением аргумента является вещественное число в экспоненциальной форме;


7) f – значением аргумента является вещественное десятичное число с плавающей точкой;


8) u – значением аргумента является беззнаковое целое число;


9) 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


В этом примере ширина поля ( она равна двум) меньше, чем число цифр в числе 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.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), затем будет выведено целое значение i по формату d, и окончательно курсор перейдет в начало новой строки (n). Таким образом, результат работы этой функции на экране будет иметь вид:


_ _ _ _ _ _ _ _ ЭВМ


50


1.3.2 Ввод данных


Для форматного ввода данных используется функция


scanf(«управляющая строка», аргумент1, аргумент2,...);


Если в качестве аргумента используется переменная, то перед ее именем записывается символ &.


Управляющая строка содержит спецификации преобразования и используется для установления количества и типов аргументов. спецификации для определения типов аргументов такие же, как и для функции printf. Перед символами d,o,x,f может стоять буква l. В первых трех случаях соответствующие переменные должны иметь тип long, а в последнем double.


Рассмотрим пример. Требуется ввести значения для переменных i (целого типа) и a (вещественного типа). Эту задачу выполнит функция:


scanf(“%d%f”,&i,&a);


В управляющей строке спецификации трех типов могут быть отделены друг от друга различными знаками, в том числе и пробелом. Следовательно, при занесении значений переменных необходимо использовать указанный разделитель. Если спецификации не отделены одна от другой никакими значениями, то значения переменных заносятся через пробел.


В языке СИ есть две очень удобные функции 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,


переменная а получит значение 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)
√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 с.

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Операторы ввода и вывода в языке программирования Си

Слов:2893
Символов:27912
Размер:54.52 Кб.