Главная страница

Лекции по С. лекция ОАиП-С++. Лекция Общие сведения о языке С


Скачать 0.67 Mb.
НазваниеЛекция Общие сведения о языке С
АнкорЛекции по С
Дата08.09.2022
Размер0.67 Mb.
Формат файлаpdf
Имя файлалекция ОАиП-С++.pdf
ТипЛекция
#667335


Лекция 2. Общие сведения о языке С++
++:
,
,
В этой лекции будут рассмотрены основные элементы языка С
алфавита переменных
,
,
, констант типов данных операций стандартных функций Здесь же будут рассмотрены структура программы и средства ввода вывода данных
2.1. Алфавит языка
++
:
Программа на языке С
может содержать следующие символы

, прописные строчные латинские буквы A, B, C, & , x, y, z
;
и знак подчеркивания

0 9;
арабские цифры от до

: { } , |, [ ] ( ) + / % * . \ : ? < = > ! & #

; ^
специальные знаки

, символы пробела табуляции и перехода на новую строку
Из символов алфавита формируют ключевые слова и идентификаторы
Ключевые слова это
, зарезервированные слова которые имеют специальное значение для компилятора и
,
(
, используются только в том смысле в котором они определены операторы языка типы
. .). данных и т п Идентификатор -
, это имя программного объекта представляющее собой
, совокупность букв цифр и символа подчеркивания Первый символ идентификатора буква
, или знак подчеркивания но не цифра Идентификатор не может содержать пробел
,
, ABC, abc, Abc
Прописные и строчные буквы в именах различаются например три различных имени К
(
) аждое имя идентификатор должно быть уникальным в пределах функции и не должно совпадать с ключевыми словами
В тексте программы можно использовать комментарии.
Если текст начинается с двух
«
» // символов косая черта и заканчивается символом перехода на новую строку или заключен
/* */, между символами и
то компилятор его игнорирует Комментарии удобно использовать
, как для пояснений к программе так и для временного исключения фрагментов программы при отладке
2.2. Данные в языке С++
-
Для решения задачи в любой программе выполняется обработка каких либо данных Данные
:
, могут быть различных типов целые и вещественные числа
,
, символы строки массивы
++
Данные в языке С
принято описывать в начале функции Обязательное описание типов данных позволяет компилятору контролировать допустимость программных кодов
2.2.1. Типы данных
Типы данных определяют способ хранения чисел или символов в памяти компьютера Они
,
, задают размер ячейки в которую будет записано то или иное значение определяя тем самым
++ его максимальную величину или точность задания Типы языка С
можно разделить на основные и составные
К
основным типам данных
:
языка относят

char
; символьный

int
; целый

float
; с плавающей точкой

double
; двойной точности

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

short
;
короткий

long
;
длинный


signed
;
знаковый

unsigned беззнаковый
( . . 2.2.2. - 2.2.6)
Далее п п будут рассмотрены назначение и описание каждого типа
1
2.2.2. Символьный тип
Данные типа char в памяти компьютера всегда занимают один байт.
,
Это связано с тем что
, обычно под величину символьного типа отводят столько памяти сколько необходимо для
256 хранения любого из символов клавиатуры Символьный тип может быть со знаком или без знака В величинах со знаком signed char
128 можно хранит значения в диапазоне от до
127.
Соответственно значения переменных типа unsigned char могут находиться в диапазоне
0 255 (
. 2.1). от до табл
. 2.1.
Таблица
Символьные типы данных
Тип
Диапазон
Размер char
-128..127 1 байт unsigned char
0..255 1 байт signed char
-128..127 1 байт
,
При работе с символьными данными нужно помнить что если в выражении встречается
одиночный символ, он должен быть заключен в одинарные кавычки Последовательность
, символов то есть строка, при использовании в выражениях заключается в двойные кавычки
2.2.3. Целочисленный тип
Переменная типа int
, в памяти компьютера может занимать либо два либо четыре байта. Это
,
зависит от разрядности процессора По умолчанию все целые типы считаются знаковыми т е спецификатор signed можно не указывать Спецификатор unsigned позволяет представлять только положительные числа
2.2.
Диапазоны значений целого типа представлены в таблице
. 2.2.
Таблица
Целые типы данных
Тип
Диапазон
Размер int
-32767 .. 32767 4 байта unsigned int
0 .. 65535 4 байта signed int
-32767 .. 32767 4 байта short int
-32767 .. 32767 2 байта long int
-2147483647 .. 2147483647 4 байта unsigned short int
0 .. 65535 2 байта signed short int
-32767 .. 32767 2 байта long long int
-(2 63-
1) .. (2 63
-1)
8 байт signed long int
-2147483647 .. 2147483647 4 байта unsigned long int
0 .. 4294967295 4 байта unsigned long long int
0 .. 2 64
-1 8 байт
2.2.4. Вещественный тип
Внутреннее представление вещественного числа в памяти компьютера отличается от представления целого числа Число с плавающей точкой представлено в экспоненциальной форме mE±p, где m
(
), мантисса целое или дробное число с десятичной точкой p порядок
(
). целое число Для того чтобы перевести число в экспоненциальной форме к обычному
, представлению с фиксированной точкой необходимо мантиссу умножить на десять в степени порядок.
,
Например
-6.42 +2 = -6.42.10
Е
2
= -642,
3.2E-6 = 3.2.10
-6
=0.0000032 1
,
В таблицах этой главы приведены стандартные размеров памяти соответствующие типам данных Узнать объем занимаемой переменной для конкретного компилятора можно с помощью функции определения sizeof ( .1.5.7).
размера п

Обычно величины типа float
4
, занимают байта из которых один двоичный разряд отводится
, 8 23 под знак разрядов под порядок и под мантиссу Поскольку старшая цифра мантиссы
1, всегда равна она не хранится
Величины типа double
8
,
11 52
занимают байт в них под порядок и мантиссу отводится и
разряда соответственно Длина мантиссы определяет
точность числа, а длина порядка его
диапазон.
Спецификатор типа long перед именем типа double
, указывает что под величину
10 отводится байт
2.3.
Диапазоны значений вещественного типа представлены в таблице
. 2.3.
Таблица
Вещественные типы данных
Тип
Диапазон
Размер float
3.4 -38 .. 3.4E+38
Е
4 байта double
1.7 -308 .. 1.7E+308
Е
8 байт long double
3.4 -4932 .. 3.4E+4932
Е
8 байт
2.2.5. Логический тип
Переменная типа bool может принимать только два значения true (
) истина или false (
).
ложь
Любое значение не равное нулю интерпретируется как true, а при преобразовании к целому
1. типу принимает значение равное Значение false
0.
представлено в памяти как
2.2.6. Тип void
Множество значений этого типа пусто.
,
Он используется для определения функций которые
,
, не возвращают значения для указания пустого списка аргументов функции как базовый тип для указателей и в операции приведения типов
2.3. Переменные в языке С++
Переменная
, поименованный участок памяти в котором хранится значение определенного типа У переменной есть имя (
) идентификатор и значение.
Имя служит для обращения к
, области памяти в которой хранится значение Во время выполнения программы значение переменной можно изменить Перед использованием любая переменная должна быть
описана:
_
тип список переменных;
,
Например int a, bc, f;
float g, u, h12;
В Си могут обрабатываться
структурированные типы данных:
,
,
,
массивы строки структуры файлы
По
месту объявления
:
,
переменные в языке Си можно разделить на три класса локальные глобальные и формальные параметры функции
Локальные
:
переменные объявляются внутри функции и доступны только в ней Например int main()
{
float s; //В функции main определена вещественная переменная s,
s=4.5; //и ей присвоено значение 4.5.
}
int f1()
{
int s; //В функции f1 описана другая переменная s (типа int),
s=6; //ей присвоено значение 6.
}
int f2()
{
long int s; //В функции f2 определена еще одна переменная s s=25; //(типа long int) и ей присвоено значение 25.
}

Глобальные переменные описываются до всех функций и доступны из любого места
:
программы Например float s; //Определена глобальная переменная s (типа float).
int main()
{
s=4.5; //В функции main переменной s присваивается значение 4.5.
}
int f1()
{
s=6; //В функции f1 переменной s присваивается значение 6.
}
int f2()
{
s=25; //В функции f2 переменной s присваивается значение 25.
}
Формальные параметры функций описываются в списке параметров функции Работа с
4.
функциями подробно описана в главе
2.4. Константы в языке С++
Константы
, это величины которые не изменяют своего значения в процессе выполнения
:
программы Оператор описания константы имеет вид
onst
=
;
с тип имя значение
++
,
,
Константы в языке С
могут быть целыми вещественными символьными или строковыми
,
Обычно компилятор определяет тип константы по внешнему виду но существует
,
,
возможность и явного указания типа например const double pi=3.141592653589793
Константа может быть определена до главной функции main.
В этом случае применяется директива #define:
#define PI 3.141592653589793
int main()
{…
2.5. Операции и выражения
Выражение
задает порядок выполнения действий над данными и состоит из операндов
(
,
,
),
: a констант переменных обращений к функциям круглых скобок и знаков операций
+b*sin(cos(x)).
Операции
(
, - )
делятся на унарные например с
(
, и бинарные например +b). а
В
. 2.4
++.
табл представлены основные операции языка С
. 2.4.
++
Таблица
Основные операции языка С
Операция
Описание
Унарные операции
++
увеличение значения на единицу
-- уменьшение значения на единицу

поразрядное отрицание
!
логическое отрицание
-
(
)
арифметическое отрицание унарный минус
+
унарный плюс
&
взятие адресаа
*
разадресация
(type)
преобразование типа
Бинарные операции
+
сложение
- вычитание
*
умножение

Операция
Описание
/
деление
%
остаток от деления
<<
сдвиг влево
>>
сдвиг вправо
<
меньше
>
больше
<=
меньше или равно
>=
больше или равно
==
равно
!=
не равно
&
поразрядная конъюнкция ( )
И
^
поразрядное исключающее ИЛИ
|
(
)
поразрядная дизъюнкция ИЛИ
&&
логическое И
||
логическое ИЛИ
=
присваивание
*=
умножение с присваиванием
/=
деление с присваиванием
+=
сложение с присваиванием
-=
вычитание с присваиванием
%=
остаток от деления с присваиванием
<<=
сдвиг влево с присваиванием
>>=
сдвиг вправо с присваиванием
&=
поразрядная конъюнкция с присваиванием
|=
поразрядная дизъюнкция с присваиванием
^=
поразрядное исключающее ИЛИ с присваиванием
Другие операции
?:
условная операция
,
последовательное вычисление sizeof определение размера
(
)
тип преобразование типа
Перейдем к подробному рассмотрению основных операций языка
2.5.1. Операции присваивания
Обычная
операция присваивания
:
имеет вид
_
=
;
имя переменной значение
,
, где значение это выражение переменная константа или функция Выполняется операция так
,
Сначала вычисляется значение выражения указанного в правой части оператора а затем его
,
, результат записывается в область памяти имя которой указано слева Например запись a=b
, означает что переменной а присваивается значение b.
Если a и b
,
переменные разных типов
: происходит преобразование типов значение в правой части преобразуется к типу
, переменной левой части Следует учитывать что при этом можно потерять информацию или получить другое значение
++
В С
существует возможность присваивания нескольким переменным одного и того же значения Такая операция называется
множественным присваиванием и в общем виде может
:
быть записана так
_
1=
_
2=..=
_
имя переменной имя переменной имя переменнойN=
;
значение
Запись a=b=c=3.14159/6;
, a, b c означает что переменным и было присвоено одно и то же
3.14159/6.
значение
Операции +=, =, *=, /= называют
составным присваиванием.
В таких операциях при

,
вычислении выражения стоящего справа используется значение переменной из левой части
:
например так x+=p; //Увеличение x на p, то же что и x=x+p.
x-=p; //Уменьшения x на p, то же что и x=x-p.
x*=p; //Умножение x на p, то же что и x=x*p.
x/=p; //Деление x на p, то же что и x=x/p.
2.5.2. Арифметические операции
+, -, *, /
Операции относят к
арифметическим операциям.
Их назначение понятно и не требует дополнительных пояснений
Операции инкремента ++ и
декремента --
, так же причисляют к арифметическим так как они выполняют увеличение и уменьшение на единицу значения переменной Эти операции имеют две формы записи префиксную (
) операция записывается перед операндом и
постфиксную (
).
, операция записывается после операнда Так например оператор p=p+1;
++p; можно представить в префиксной форме и p++;.
в постфиксной
Эти формы отличаются
(
) при использовании их в выражении Если знак декремента инкремента предшествует
,
(
)
, операнду то сначала выполняется увеличение уменьшение значения операнда а затем
, операнд участвует в выражении Например x=12;
y=++x; //В переменной y будет храниться значение 13.
(
)
,
Если знак декремента инкремента следует после операнда то сначала операнд участвует в
,
(
)
:
выражении а затем выполняется увеличение уменьшение значения операнда x=12;
y=x++; //Результат – число 12 в переменной y.
Остановимся на
операциях целочисленной арифметики.
Операция
целочисленного деления /
(
) возвращает целую часть частного дробная часть отбрасывается в том случае если она
, применяется к целочисленным операндам в противном случае выполняется обычное
: деление 11/4=2 11.0/4=2.75. или
Операция
остаток от деления % применяется только к
: целочисленным операндам 11%4 = 3.
К
операциям битовой арифметики
: &, |, ^, , <<, >>. относятся следующие операции
В операциях битовой арифметики действия происходят над двоичным представлением целых чисел
Арифметическое И (&).
,
Оба операнда переводятся в двоичную систему затем над ними
: происходит логическое поразрядное умножение операндов по следующим правилам
1&1=1,
1&0=0,
0&1=0,
0&0=0.
,
=13
=23,
Например если А
и В
то их двоичное представление соответственно
=0000000000001101 =0000000000010111.
А
и В
В результате логического умножения A&B
0000000000000101 5
,
получим или в десятичной системе счисления Таким образом
A&B=13&23=5.
&
0000000000001101 0000000000010111 0000000000000101
Логическое умножение A&B
Арифметическое ИЛИ (|).
,
Здесь также оба операнда переводятся в двоичную систему после чего над ними происходит логическое поразрядное сложение операндов по следующим
:
правилам
1|1=1,
1|0=1,
0|1=1,

0|0=0.
,
=13 =23
Например результат логического сложения чисел А
и В
будет равен A|B=31 (
. 2.2).
рис
|
0000000000001101 0000000000010111 0000000000011111
Логическое сложение A|B
Арифметическое исключающее ИЛИ (^).
,
Оба операнда переводятся в двоичную систему
^ после чего над ними происходит логическая поразрядная операция по следующим
:
правилам
1^1=0,
1^0=1,
0^1=1,
0^0=0.
Арифметическое отрицание ().
Эта операция выполняется над одним операндом
Применение операции вызывает побитную инверсию двоичного представления числа
13=14.
0000000000001101
a 11111111111110010
Арифметическое отрицание
Сдвиг влево (M< M
L
Двоичное представление числа сдвигается влево на позиций
Рассмотрим операцию 17<<3.
17 10001.
Число в двоичной системе имеет вид
При сдвиге его
3 10001000.
136.
на позиции влево получим
В десятичной системе это двоичное число равно
,
Итак 17<<3 =136.
,
,
Заметим что сдвиг на один разряд влево соответствует умножению на два
,
,
на два разряда умножению на четыре на три умножению на восемь Таким образом
M<<
операция
L
M эквивалентна умножению числа на 2 в степени L.
Сдвиг вправо (M>>L).
M
В этом случае двоичное представление числа сдвигается вправо на
L
, позиций что эквивалентно целочисленному делению числа M на в степени L.
,
Например
25>>1=12, 25>>3= 3.
2.5.3. Логические операции
++
В С
определены следующие
логические операции ||, &&, !.
Логические операции true (
) false (
).
++
0,
выполняются над логическими значениями истина и ложь В языке С
ложь истина любое значение

0.
. 2.5
В табл приведены результаты логических операций
. 2.5.
Таблица
Логические операции
A
B
!A
A&&B
A||B
0 0
1 0
0 0
1 1
0 1
1 0
0 0
1 1
1 0
1 1
2.5.4. Операции отношения
Операции отношения возвращают в качестве результата логическое значение Таких
: операций шесть >, >=, <, <=, ==, !=.
Результат операции отношения логическое значение true (
) false (
). истина или ложь
2.5.5. Условная операция
Для организации разветвлений в простейшем случае можно использовать
условную операцию
? :.
:
Эта операция имеет три операнда и в общем виде может быть представлена так

?
1 :
2;
условие выражение выражение
(
0),
Работает операция следующим образом Если условие истинно не равно то результатом будет в
1
ыражение ,
2.
, y=x<0 ? x : x;
в противном случае выражение Например операция y записывает в переменную модуль числа х
2.5.6. Операция преобразования типа
++
Для приведения выражения к другому типу данных в С
существует операция
преобразования типа:
(
)
;
тип выражение
,
Например в результате действий x=5; y=x/2; z=(float) x/2; п y еременная примет значение
2 (
), z = 2.5.
равное результат целочисленного деления а переменная
2.5.7. Операция определения размера
Вычислить размер объекта или типа в байтах можно с помощью
операции определения
размера,
:
которая имеет две формы записи
sizeof (
)
тип или sizeof выражение
,
В качестве примера рассмотрим программу вычисляющую размеры основных типов данных
(
. 2.1).
в байтах Результаты вычислений выводятся на экран рис
#include "stdafx.h"
#include "iostream"
using namespace std;
int main()
{
int i=3;
//Определение целочисленной переменной.
double d=0.2; //Определение вещественной переменной.
//Вычисление размеров различных типов данных:
cout<<"Size char:"<cout<<"Size float:"<cout<<"Size double:"<cout<<"Size long double:"<//Размер памяти, отведенной под строку "STROKA".
cout<<"Size STROKA:"<//Размер памяти, отведенной под целочисленную переменнцю i.
cout<<"Size i:"<//Размер памяти, отведенной под значение выражения i+d.
cout<<"Size i+d:"<return 0;
}
. 2.1.
,
На рис видно сколько памяти отводится под тот или иной тип данных Остановимся на
, определении размера объектов Так объект STROKA
6 7
состоит из символов и занимает
, . .
( .
байтов т е по одному байту на каждую букву и один байт на символ окончания строки п
2.2.2).
Под переменную i
4
, отведено байта Действительно тип переменной int, занимает в
4 памяти байта Последний объект это выражение i+d.
8
Его значение занимает в памяти
, байт Это связано с тем что тип double
(8
) более длинный байтов по сравнению с типом int (4
) байта и значение результата было преобразовано к более длинному типу
2
. 2.1.
,
Рис
Результаты работы программы определяющей размеры объектов
2
sizeof (i+d)
,
В записи операции были использованы скобки Это связано с тем что операция приведения типа
, имеет более высокий приоритет чем операция сложения

2.6. Стандартные функции
C++
В
определены стандартные функции
(
. 2.6).
над арифметическими операндами табл
. 2.6.
Таблица
Стандартные математические функции
Обозначение Действие abs(x)
Модуль целого числа fabs(x)
Модуль вещественного числа sin(x)
Функция синус cos(x)
Функция косинус tan(x)
Функция тангенс atan(x)
x
-
Арктангенс в диапазоне
π
/2 до
π
/2
exp(x)
, e
Экспонента x
log(x)
(x
Натуральный логарифм >0) log10(x)
(x
Десятичный логарифм >0) sqrt(x)
(x
Корень квадратный ≥0)
pow(x,y)
x y
в степени
Определенную проблему представляет применение функции pow(x,y), которая возводит х в y.
,
, степень
При программировании выражений содержащих возведение в степень надо
, y, внимательно проанализировать значения которые могут принимать х и так как в y некоторых случаях возведение х в степень невыполнимо
,
,
, y
, y
Так ошибка возникает если х отрицательное число а дробь Предположим что правильная дробь вида k/m.
Если знаменатель m
, четный это означает вычисление корня
,
, четной степени из отрицательного числа а значит операция не может быть выполнена В
, противном случае если знаменатель m
, нечетный можно воспользоваться выражением z=
pow(fabs(x),y).
2.7. Структура программы
++
Программа на языке С
состоит из функций, описаний и
директив процессора. main.
Одна из функций должна обязательно носить имя
Элементарное
описание функции
:
имеет вид
_
_
(
)
тип результата имя функции параметры
{
1;
оператор
2;
оператор
..
операторN;
}
,
_
,
(
Здесь тип результата это тип того значения которое функция должна вычислить если
, void),
_
, функция не должна возвращать значение указывается тип имя функции имя с
, которым можно обращаться к этой функции параметры список аргументов функции
(
),
1,
2,.., может отсутствовать оператор оператор операторN
, операторы представляющие
, тело функции они обязательно заключаются в фигурные скобки и каждый оператор заканчивается точкой с запятой
3
++
Как правило программа на С
состоит из одной или
, нескольких не вложенных друг в друга функций
Основному тексту программы предшествуют
директивы процессора, которые в общем виде
:
выглядят так
#include <
_
>
имя файла
,
Каждая такая строка дает компилятору команду присоединить программный код который хранится в отдельном файле с расширением h.
Такие файлы называют файлами заголовков
3
Подробно работу с функциями рассмотрим в четвертой лекции

-
,
С их помощью можно выполнять ввод вывод данных работать с математическими
,
,
,
функциями преобразовывать данные распределять память и многое другое Например описание стандартных математических функций находится в заголовочном файле math.h.
Общую структуру программы
++
:
на языке С
можно записать следующим образом директивы процессора описание глобальных переменных
_
main(
)
тип результата параметры
{
операторы главной функции
}
_
1(
1)
тип результата имя параметры
{
1;
операторы
}
_
2(
2)
тип результата имя параметры
{
2;
операторы
}
...................................................
_
тип результата имяN(параметрыN)
{
операторыN;
}
2.8. Ввод и вывод данных
-
Ввод вывод данных
++ в языке С
осуществляется либо с помощью
-
функций ввода вывода в
, стиле С либо с использованием
библиотеки классов ++.
++
С
Преимущество объектов С
в
,
,
- том что они легче в использовании особенно если ввод вывод достаточно простой Функции
-
, ввода вывода унаследованные от С более громоздкие но подходят для задач с форматированным выводом данных
2.8.1. Функции ввода- вывода
Функция
printf(
строка форматов,
список выводимых переменных)
выполняет форматированный
вывод
,
, переменных указанных в списке в соответствии со строкой форматов
Функция
scanf(
строка форматов,
список адресов вводимых переменных)
выполняет
ввод
,
, переменных адреса которых указанны в списке в соответствии со строкой форматов
,
Строка форматов содержит символы которые будут выводиться на экран или запрашиваться с клавиатуры и так называемые спецификации Спецификации
, это строки которые
%
:
начинаются символом и выполняют управление форматированием
%
.
флаг ширина точность модификатор тип
,
,
Параметры флаг ширина точность и модификатор в спецификациях могут отсутствовать
. 2.7.
Значения параметров спецификаций приведены в табл
2.7.
Таблица
Символы управления
Параметр
Назначение
Флаги
-
Выравнивание числа влево
Правая сторона дополняется пробелами
По умолчанию выравнивание вправо

Параметр
Назначение
+
«+»
«-»
Перед числом выводится знак или
Пробел
,
Перед положительным числом выводится пробел
«-»
перед отрицательным
#
: 0 -
Выводится код системы счисления перед
, 0
(0 ) восьмеричным числом х
Х
перед шестнадцатеричным числом
Ширина n
Ширина поля вывода Если n
,
позиций недостаточно то поле вывода расширяется до минимально необходимого Незаполненные позиции заполняются пробелами
0n
,
То же что и n, но незаполненные позиции заполняются нулями
Точность ничего
Точность по умолчанию n
Для типов e, E, f выводить n знаков после десятичной точки
Модификатор h
Для d, i, o, u, x, X тип short int.
l
Для d, i, o, u, x, X тип long int.
Тип с
При вводе символьный тип char, при выводе один байт d
Десятичное int со знаком i
Десятичное int со знаком o
Восьмеричное int unsigned.
u
Десятичное int unsigned.
x, X
Шестнадцатеричное int unsigned, при х используются символы a-f,
- при Х A-F.
f
[-]
Значение со знаком вида dddd.dddd.
e
[-]
Значение со знаком вида d.dddde[+|-]ddd.
E
[-]
Значение со знаком вида d.ddddE[+|-]ddd.
g
Значение со знаком типа e или f в зависимости от значения и точности
G
Значение со знаком типа e или F в зависимости от значения и точности s
Строка символов
,
,
Кроме того строка форматов может содержать некоторые специальные символы которые
. 2.8.
приведены в табл
2.8.
Таблица
Специальные символы
Символ
Назначение
\b
Сдвиг текущей позиции влево
\n
Перевод строки
\r
,
Перевод в начало строки не переходя на новую строку
\t
Горизонтальная табуляция
\'
Символ одинарной кавычки
\''
Символ двойной кавычки
\?
?.
Символ
,
-
,
Первой строкой программы в которой будут применяться функции ввода вывода языка С
#
должна быть директива include .
Заголовочный файл stdio.h содержит описание

- функций ввода вывода
Рассмотрим работу функций на примере следующей задачи
2.1
ЗАДАЧА
. a, b, c
,
S
P
Зная длины сторон треугольника вычислить площадь и периметр этого треугольника
Входные данные: a, b, c.
Выходные данные: S, P.
:
Для вычисления площади применим формулу Герона S=

r ra  rb   rc  , r - где полупериметр
Далее приведены две программы для решения данной задачи и результаты их работы
Сравните работу функций printf и scanf в этих программах
//ЗАДАЧА 2.1. Вариант первый
#include
#include
int main()
{
float a,b,c,S,r;
//Описание переменных.
//В операторах scanf для вычисления адреса
//переменной применяется операция &.
printf("a="); //Вывод на экран символов a=.
scanf("%f",&a);
//Запись в переменную а
//значениия введенного с клавиатуры.
printf("b=");
//Вывод на экран символов b=.
scanf("%f",&b);
//Запись в переменную b значениия
//введенного с клавиатуры.
printf("c=");
//Вывод на экран символов c=
scanf("%f",&c);
//Запись в переменную c значениия
//введенного с клавиатуры.
r=(a+b+c)/2;
//Вычисление полупериметра.
S=sqrt(r*(r-a)*(r-b)*(r-c));
//Вычисление площади треугольника.
//Вывод символов S=, значения S и символа табуляции \t.
//Спецификация %5.2f означает, что будет выведено вещественное число,
//под которое отводится 5 знаков, причем 2 из них после точки.
printf("S=%5.2f \t",S);
//Вывод символов p=, значения выражения 2*r
//и символа окончания строки \n.
printf("p=%5.2f \n",2*r);
//Оператор printf("S=%5.2f \t p=%5.2f \n",S,2*r);
//выдаст тот же результат.
return 0;}
//ЗАДАЧА 2.1. Вариант второй
#include
#include
int main()
{
float a,b,c,S,r;
printf("Vvedite a, b, c \n");
//Вывод на экран строки символов.
scanf("%f%f%f",&a,&b,&c);
//Ввод значений.
r=(a+b+c)/2;
S=sqrt(r*(r-a)*(r-b)*(r-c));
printf("S=%5.2f \t p=%5.2f \n",S,2*r);
//Вывод на экран результатов.
return 0;
}

2.8.2. Объектно-ориентированные средства ввода-вывода.
Описание объектов для управления
-
вводом выводом содержится в заголовочном файле iostream.h.
#
При подключении этого файла с помощью директивы include в
- программе автоматически создаются объекты потоки
4
cin для ввода с клавиатуры и cout для
вывода
,
<<
>>.
на экран а так же операции помещения в поток и чтения из потока
,
Итак с помощью объекта cin
>> и операции можно присвоить значение любой переменной
,
Например если переменная i
, описана как целочисленная то команда cin>> i;
, означает что в переменную i
, будет записано некое целое число введенное с клавиатуры Если нужно ввести
, несколько переменных следует написать cin>>x>>y>>z;.
cout
<<
Объект и операция позволяют вывести на экран значение любой переменной или
,
, текст Текст необходимо заключать в двойные кавычки кроме того допустимо применение
\
специальных символов t \
и n. cout<<
Запись i; означает вывод на экран значения переменной i.
А команда cout<Рассмотрим следующую задачу
2.2.
ЗАДАЧА
Известны плотность
ρ
, высота h и радиус основания R цилиндрического
, слитка полученного в металлургической лаборатории Найти объем V, массу m и площадь S основания слитка
Входные данные:
ρ
, h, R.
Выходные данные: S, V, m.
,
Учитывая что S=2
π
R, V=
π
R
2
h и m=
ρ
V
:
составим текст программы
#include "stdafx.h"
#include
using namespace std;
#define pi 3.14159
//Определение константы.
int main()
{double R,h,r,S,V,m; //Описание переменных.
cout<<"R=";
//Вывод на экран символов R=.
cin>>R;
//Ввод значения переменной R.
cout<<"h=";
//Вывод на экран символов h=.
cin>>h;
//Ввод значения переменной h.
cout<<"r=";
//Вывод на экран символов r=.
cin>>r;
//Ввод значения переменной r.
S=2*pi*R;
//Расчет площади.
V=pi*R*R*h;
//Вычисление объема.
m=r*V;
//Определение массы.
cout<<"S="<cout<<"\n V="<//Вывод на экран с новой строки V= и значения V.
cout<<"\n m="<//Вывод на экран с новой строки m= и значения m.
return 0;
}
4
-
,
Поток виртуальный канал связи создаваемый в программе для передачи данных


написать администратору сайта