У вас вопросы?
У нас ответы:) SamZan.net

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

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 28.12.2024

red0;

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


.
 Теоретические сведения

1.1 Структура программы

Цель работы: изучить операторы ввода и вывода, форматы, используемые в этих операторах. Оформить законченную программу с применением этих операторов.

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

main ( )

{

Тело программы

}

В самом простом случае функция main не имеет аргументов, поэтому в скобках ничего не содержится. Для работы программы, обеспечивающей ввод и вывод информации, перед функцией main необходимо поместить строку:

#include <stdio.h>

1.2 Алфавит языка и типы данных

Алфавит языка включает латинские прописные и строчные буквы, цифры и специальные знаки. К последним относятся: . (точка), , (запятая), ‘(апостроф), : (двоеточие) и др.

Важным понятием языка является идентификатор, который используется в качестве имени объекта, например, переменной, функции и т.п. Идентификатор может содержать до 32 символов и состоит из букв и цифр, но начинается обязательно с буквы. Строчные буквы отличаются от прописных, поэтому идентификаторы SIGMA и sigma считаются разными.

В языке СИ существует несколько типов данных. Каждый тип данных определяется одним из следующих ключевых слов:

  1.  int (целый) –задает значения, к которым относятся все целые числа. Диапазон возможных целых значений лежит в пределах отдо 32767, переменная типа int занимает 16 бит;
  2.  short (короткий целый) –соответствующие объекты не могут быть больше, чем int, переменные этого типа занимают 16 бит;
  3.  long (длинный целый) –соответствующие объекты не могут быть меньше, чем int. Переменная типа long занимает 32 бита и позволяет представить целые числа отдо 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 Ввод и вывод информации

.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). Таким образом, результат работы этой функции на экране будет иметь вид:

_ _ _ _ _ _ _ _ ЭВМ

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.  Операторы и выражения

Выражения широко используются в программах на языке СИ и представляют собой формулы для вычисления переменных. Они состоят из операндов (переменные, константы и др.), соединенных знаками операций (сложение, вычитание, умножение и др.). Порядок выполнения при вычислении значения выражения определяется их приоритетами и может регулироваться с помощью круглых скобок. Наиболее часто арифметические выражения используются в операторе присваивания. Этот оператор заменяет значение переменной в левой части оператора на значение выражения, стоящего в правой части, и имеет следующую форму:

переменная = выражение;

В языке СИ может быть использован модификатор 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

;




1. Лабораторна робота 13 Мета- Створення webсторінок за допомогою програми MS FrontPge
2. з курсу- ldquo;Основи економічної теоріїrdquo; Рекомендовано Вченою радою НПУ імені М
3. 092.9 ФАРМАКОКІНЕТИКА КООРДИНАЦІЙНИХ СПОЛУК ГЕРМАНІЮ З БІОЛІГАНДАМИ 14
4. Основные особенности психологического эксперимента- 1 инициатива экспериментатора в появлении интер
5. Команды Norton Commander.html
6. тематической анатомии 5
7. Тема 13 Управленческий процесс как исполнение государственной службы
8. .К. Сказки Бажов П
9. З КУРСУ ГЕОДЕЗIЯ ДЛЯ СТУДЕНТІВ ЗА НАПРЯМОМ ПІДГОТОВКИ 6
10. Проектування технологічного процесу видання «Первая дорога пешком»
11. статья родилась из стремления изложить достаточно сложный материал наиболее понятным языком чтобы не тольк
12. Розвиток пізнавального інтересу молодших школярів у процесі вивчення курсу Я і Україна в 3-4 класах
13. Термінальна. 2
14. Тема- ВЗАИМОСВЯЗЬ БОЛЕЗНЕЙ ПЕРИОДОНТА С СОМАТИЧЕСКИМИ ЗАБОЛЕВАНИЯМИ
15. Меркурий
16. Планк Макс
17. Лабораторна робота 3 Циклічні алгоритми Мета роботи- засвоїти структуру програми із використанням ц
18. Разработка системы автоматизации жилого пространства, внедрение которой даст возможность управлять работой ее объектов
19. XI классах большее предпочтение отдаётся аналитическому исследованию и схема изучения функции выглядит сле
20. ru Москва 23 апреля 2013 11-25-007 В КАЗАНИ ЗАВЕРШИЛСЯ РОЗЫГРЫШ КУБКА СТРАНЫ ПО ПЛАВАНИЮ - Российская газета