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


Лабораторная№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%d\n”,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)

Перед аргументом ифункцией указан допустимый тип (при программировании эта запись типа опускается).

В программах на языке СИважная роль отводится комментариям, которые повышают наглядность и удобствочтения программ. Они могут быть записаны в любом месте программы и обрамляютсясимволами /* и */.

Рассмотрим примерпрограммы на языке СИ.

/> /> /> /> /> /> /> /> /> /> <td/> /> <td/> /> <td/> /> /> /> />

Требуется вычислить:

Для работы с математическимифункциями необходимо перед функцией 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          

x = 4,5

y = 8,5

i = 3

j = 6

2          

n = 10,2

x = 4,3

i = 5

m = 2

3          

m = 8,1

w = 4,2

x = 10

y = 4

4          

t = 4,7

z = 0,8

p = 6,2

k = – 4

m = 6

5          

t = 4,1

p = 3,2

w = 8,7

j = 3

i = 7

6          

x = 5,7

y = 1,9

k = 8

m = 2

7          

m = 5,6

n = 9,4

i = 4

j = 9

8          

q = 1,7

p = 2,3

i = 9

j = 4

9          

n = 2,6

m = 3,7

p = 6

k = 2

10        

t = 1,1

p = 2,4

k = 4

i = 5

11        

x = 3,7

y = 2,1

i = 3

j = 4

12        

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

еще рефераты
Еще работы по информатике, программированию