Лекция
№ 1
Тема:
Знакомство с языком C++. Операторы и типы данных
План
1. История развития языка программирования С++
4. Операторы и
математические функции
5. Операторы
ввода/вывода на языке С++
1. История развития языка программирования С++
Языка C++, объединяющий в себе свойства языка С и объектно-ориентированного
программирования, стал один из главных языков программирования в 90–е годы и
твердо продолжает оставаться таким в начале XXI века. Язык C++ получил в наследство
от языка С такие качества, как эффективность, компактность, быстрота
выполнения и переносимость программ. От объектно-ориентированного программирования
язык C++ получил новую методологию программирования, позволяющую справиться с
возросшей сложностью современных задач программирования. А такие элементы
языка, как улучшенные шаблоны, привносят в язык C++ еще одну новую методологию
программирования: обобщенное программирование. Это тройное наследство является
для языка C++ одновременно и благословением, и проклятием. Оно делают язык
очень мощным, но в то же время и сложным; а это означает, что программистам
приходится больше изучать.
В последние несколько десятилетий компьютерная технология развивалась
поразительными темпами. Языки программирования также претерпели значительную
эволюцию. В 70–е годы такие языки программирования, как С и Pascal, помогли
войти в эру структурного программирования, принесшего порядок в ту область,
которая сильно нуждалась в этом. Язык С предоставил в распоряжение
программиста инструменты, необходимые для структурного программирования, а
также обеспечил создание компактных, быстро работающих программ и возможность
адресации аппаратных средств, например, возможность управления портами связи и
накопителями на магнитных дисках. Эти качества помогли языку С стать господствующим
языком программирования в 80–е годы. Вместе с тем в эти годы появилась новая модель
программирования: объектно-ориентированное программирование, или ООП,
воплощенное в таких языках, как SmallTalk и C++.
Язык С
Сотрудник компании Bell Laboratories Кена Томпсона в 1969 году разработал
язык B (би) для создания других программных систем. Однако этот язык был
интерпретируемым, что не позволяло создавать на нем независимые исполняемые
файлы. Тем не менее, этот язык явился предшественником языка С.
В начале 70-х годов Денис Ритчи из компании Bell Laboratories занимался
разработкой операционной системы UNIX. Для выполнения этой работы Ритчи
нуждался в таком языке программирования, который был бы кратким, а также мог бы
обеспечивать эффективное управление аппаратными средствами и создание
компактных, быстро работающих программ. Традиционно такие потребности программистов
удовлетворял язык ассемблера, который тесно связан с внутренним машинным
языком компьютера. Однако язык ассемблера – это язык низкого уровня, т.е. он
привязан к определенному типу процессора (или компьютера). Поэтому если
программу на языке ассемблера необходимо перенести на компьютер другого типа,
то ее приходится переписывать заново на другом языке ассемблера.
Операционная система UNIX предназначалась для работы на разнообразных
типах компьютеров (или платформах). А это предполагало использование языка
высокого уровня. Язык высокого уровня ориентирован на решение задач, а не на
конкретное аппаратное обеспечение. Специальные программы, которые называются
компиляторами, транслируют программу на языке высокого уровня в программу на
внутреннем языке конкретного компьютера. Таким образом, используя отдельный
компилятор для каждой платформы, одну и ту же программу на языке высокого уровня
можно выполнять на разных платформах. Ритчи нуждался в языке, который бы
объединял эффективность и возможность доступа к аппаратным средствам, имеющимся
у языка низкого уровня, с более общим характером и переносимостью, присущим
языку высокого уровня. Поэтому на основе имеющегося языка программирования В
Ритчи разработал язык С. Принято считать, что авторами языка являются Ритчи и
Томпсон.
Язык С, как и большинство основных языков программирования нашего времени,
является процедурным.
Язык С++
С развитием объектно-ориентированной технологии возможностей стандартного
языка С уже было недостаточно. В результате появился язык С++.
Язык C++, так же как и язык С, является детищем компании Bell
Laboratories. Автор Бьярни Страуструп разработал этот язык в начале 80-х годов.
По его собственным словам, «язык C++ был спроектирован главным образом так,
чтобы мне и моим друзьям не приходилось программировать на ассемблере, С или
различных современных языках высокого уровня». Его главная цель состояла в следующем:
«сделать так, чтобы отдельным программистам было легче и приятнее писать
хорошие программы».
Страуструп создал C++ на основе языка С, так как язык С был кратким, хорошо
подходил для системного программирования, был широко доступен и тесно связан с
операционной системой UNIX. Объектно-ориентированная часть языка C++ возникла
под влиянием языка моделирования Simula67. Страуструп добавил элементы ООП в
язык С, не изменяя при этом существенно сам язык С.
Название C++ происходит от обозначения оператора инкремента ++ в языке С,
который добавляет единицу к значению переменной. Название C++ подразумевает,
что этот язык является усовершенствованной (++) версией языка С.
Обобщенное программирование
Обобщенное программирование – это еще одна парадигма программирования,
поддерживаемая языком C++. Оно имеет общую с ООП цель – упростить повторное использование
кодов программ. Однако, в то время как в ООП основное внимание уделяется
данным, в обобщенном программировании – упор делается на алгоритмы. И у него
другая область применения. ООП – это инструмент для разработки больших
проектов, тогда как обобщенное программирование предоставляет инструменты для
выполнения задач общего характера, таких как сортировка данных. Термин
обобщенный означает создание кода программы, независимого от типа данных. В
языке C++ имеются данные различных типов – целые числа, числа с дробной частью,
символы, строки символов, определяемые пользователем сложные структуры,
состоящие из данных нескольких типов. Если, например, требуется сортировать
данные различных типов, то обычно для каждого типа создается отдельная функция
сортировки. Обобщенное программирование расширяет язык таким образом, что позволяет
один раз написать функцию для обобщенного (т.е. неопределенного) типа данных и
затем использовать ее для разнообразных реальных типов данных. Это обеспечивается
с помощью шаблонов языка C++. (начало)
Программа C++ строится из отдельных блоков, называемых функциями. Как
правило, программа разделяется на ряд крупных задач, а затем для выполнения
этих задач разрабатываются отдельные функции.
Большинство программ на С++ имеют следующий вид:
раздел подключения заголовочных файлов
заголовок программы (функции)
{
тело функции
}
Заголовок программы
Программа C++ состоит из одного или более модулей, называемых функциями. Выполнение программы начинается
с функции, имеющей имя main(), поэтому
в программе обязательно должна присутствовать функция с таким именем. Если в
программе нет такой функции, то нет и законченной программы; компилятор в этом
случае указывает, что функция main() не была
определена.
Описание такой функции выполняют в разделе заголовка программы и записывают
в виде:
int main()
Важно учитывать тот факт, что компилятор С++ различает регистр символов.
Поэтому, имя функции, набранное в другом регистре (например: Main() или
MAIN()), будет распознаваться как неправильное.
Раздел подключения заголовочных
файлов
При создании исполняемого кода программ C++, также как и в случае с
программами С, используется препроцессор.
Это программа, которая обрабатывает исходный файл перед основной компиляцией.
Чтобы вызвать этот препроцессор, не надо делать ничего особенного. Он
запускается автоматически при компиляции программы.
Каждая программа на С++ вначале имеет директиву вида:
#include <iostream.h>
Эта директива приводит к тому, что препроцессор добавляет в программу содержимое
файла iostream. Это типичное для препроцессора действие: добавление или
изменение текста в исходном коде перед компиляцией.
Директива #include приводит к тому, что
содержимое файла iostream передается в компилятор вместе с содержимым
исходного файла. В сущности, содержимое файла iostream заменяет в программе
строку #include <iostream.h>. Исходный файл не
изменяется, а объединенный файл, созданный из исходного файла и файла iostream,
обрабатывается на следующем этапе компиляции.
Такие файлы, как iostream, называются файлами включения (поскольку они
включаются в другие файлы) или заголовочными
файлами (поскольку они включаются в начале файла). Компиляторы C++ поставляются
со многими заголовочными файлами, каждый из которых поддерживает отдельное
семейство программных средств. Заголовочные файлы в языке С по традиции имеют
расширение h, это самый простой способ идентификации типа файла по его имени.
Например, заголовочный файл math.h
поддерживает различные математические функции языка С++.
Заголовочные файлы находятся в папке include
среды разработки C++. Если при запуске программы выдается ошибка, указывающая
на отсутствие подключаемого заголовочного файла, то в среде C++ необходимо выполнить настройку. Для этого выполните команду Options – Directories, в поле
Include Directories введите ..\INCLUDE, а в поле Library Directories введите
..\LIB.
Тело функции
Тело функции содержит инструкции для компьютера, т.е. определяет то, что
собственно делает функция.
Тело функции имеет следующий вид:
{
описание переменных;
операторы;
return;
}
Как видно, тело функции заключается в фигурные скобки. Описание переменных
будет рассмотрено в следующем разделе лекции.
Оператор представляет собой инструкцию для компьютера. Чтобы понять исходный код, компилятор должен знать, когда заканчивается один оператор и начинается другой. В некоторых языках программирования используются разделители операторов. В языке Pascal один оператор от следующего отделяется точкой с запятой. В некоторых случаях точку с запятой в языке Pascal можно опускать, например, после оператора перед словом END, когда фактически не происходит разделение двух операторов. Но в языке C++, так же как и в языке С, применяется скорее признак (указатель) конца, чем разделитель. Признак конца – это точка с запятой, которая отмечает конец оператора; она является скорее частью оператора, чем разделителем между операторами. Практический результат заключается в том, что в языке C++ никогда нельзя опускать точку с запятой.
Инструкция return 0 указывает на завершение работы функции и возврат в вызывающую программу. В главной функции main() эту инструкцию можно не указывать.
В тексте программ допускается использовать комментарии. В языке C++
комментарии обозначаются двойной наклонной чертой (//). В программах C+ +
можно использовать комментарии из языка С, которые заключены между символами
/* и */.
Поскольку комментарий из языка С заканчивается не символом конца строки, а
символом */, его можно продолжать на несколько строк. В программах можно
использовать любой из этих двух видов комментариев или оба вместе. (начало)
Компьютеры – это точные, подчиняющиеся строгому порядку машины. Чтобы
запомнить в компьютере какой-нибудь элемент информации, необходимо указать, в
каком месте памяти он будет храниться, а также объем области памяти, требуемой
для хранения этого элемента информации. В языке C++ это можно сделать относительно
безболезненно с помощью оператора объявления, в котором указываются тип запоминаемой
информации и идентификатор для выделяемой области памяти.
имя_типа
имя_переменной;
Этот оператор выделяет в памяти достаточно места для хранения информации,
тип которой обозначается в операторе. Всю работу по выделению области памяти и
присвоению ей идентификатора выполняет компилятор. В языке C++ требуется
объявлять все переменные.
В языках С или Pascal все объявления переменных обычно располагаются в
самом начале функции или процедуры. В языке C++ такое ограничение отсутствует.
Действительно, в языке C++ принято объявлять переменные непосредственно перед
тем, как они впервые будут использоваться. В этом случае не требуется рыться в
программе в обратном направлении, чтобы увидеть тип переменной. Однако, данный
стиль имеет тот недостаток, что объявления всех переменных не располагаются в
одном месте. Таким образом, вы не можете с первого взгляда сказать, какие
переменные используются в функции.
Имя переменной
Для переменных рекомендуется выбирать имена, имеющие смысл. Вы должны
следовать нескольким простым правилам именования переменных в языке C++:
Типы данных
В языке С++ типы данных можно разделить на несколько видов:
Целочисленные типы.
В языке С++ различные типы целочисленных данных различаются объемом
памяти, используемым для их хранения. Больший блок памяти может представлять
больший диапазон целых чисел. Кроме того, одни типы данных (типы данных со знаком)
могут представлять и положительные, и отрицательные значения, тогда как другие
типы данных (типы данных без знака) не могут представлять отрицательные значения.
Основные типы целочисленных данных языка C++ (в порядке возрастания размера)
именуются short, int и long. Каждый из этих типов данных подразделяется на
две разновидности: со знаком и без знака. В результате вы имеете на выбор
шесть различных типов целочисленных данных.
В настоящее время во многих системах используются минимальные
гарантированные размеры данных и данные типа short имеют величину, равную 16
битам, а данные типа long – величину, равную 32 битам. Для данных типа int
остается возможность выбора. Их величина может быть равна 16, 24 или 32 битам.
В более ранних реализациях языка C++ на компьютерах IBM PC данные типа int
имеют, как правило, величину 16 битов, в Windows 95, Windows 98, Windows NT и
во многих других peaлизациях языка C++ величины типа int имеют величину 32
бита.
При объявлении переменных имена данных этих типов используются точно также,
как имена данных тина int:
short a; //создает переменную
типа short int
int b; //создает переменную типа int
long c; //создает переменную типа long int
В действительности, short – это сокращение от short int, a long –
сокращение oт long int. Данные этих трех типов: int, short
и long – являются данными со знаком, а это означает, что диапазон их возможных
значений разделяется приблизительно поровну между положительными и
отрицательными значениями. Например, 16-битовые данные типа int могут лежать в
диапазоне от –32768 до +32767.
Для каждого из трех только что рассмотренных типов данных имеется его
разновидность: тип данных без знака. Данные этих типов не могут принимать
отрицательные значения. Преимуществом здесь является то, что увеличивается
максимально возможное значение данных. Например, тип данных short представляет
данные, лежащие в диапазоне от -32768 до +32767, тогда как разновидность этого
типа данных без знака может представлять данные, лежащие в диапазоне от 0 до
65535. Конечно, типы данных без знака можно использовать только для величин,
которые никогда не бывают отрицательными. Чтобы создать разновидность
целочисленной переменной без знака, просто модифицируйте объявление с помощью
ключевого слова unsigned:
unsigned short a; //переменная типа unsigned
short
unsigned int b; //переменная типа unsigned
int
unsigned long c; //переменная типа
unsigned long
Обратите внимание, что ключевое слово unsigned является сокращением от
unsigned int.
Типы с плавающей точкой
Эти типы данных позволяют представлять числа с дробными частями. В языке
C++, как и в стандарте ANSI С, имеется три типа данных с плавающей точкой: float, double и long double.
float a; //создает переменную типа float
double b; //создает переменную типа double
long double c; //создает переменную типа long double
Все эти три типа данных могут иметь одинаковые размеры. Однако, как правило,
данные типа float имеют величину 32 бита, данные типа double – 64 бита и данные
типа long double – 80, 96 или 128 битов.
У типов данных с плавающей точкой имеется два преимущества по сравнению с
целочисленными данными. Во-первых, дробные числа могут быть представлены только
типами данных с плавающей точкой. Во-вторых, типы данных с плавающей точкой
имеют намного больший диапазон значений. С другой стороны, операции над типами
данных с плавающей точкой выполняются медленнее, чем операции над целочисленными
данными, кроме того, для типов данных с плавающей точкой может произойти
потеря точности.
Инициализация переменных
Инициализация позволяет присваивать переменным начальные
значения сразу на этапе их описания. Инициализация позволяет избежать неопределенности,
когда для переменной программист забывает задать начальное значение.
Для инициализации значения переменных использовать стандартные константы.
Инициализировать переменную можно, присваивая ей значение другой переменной,
при условии, что эта переменная была определена раньше. Можно даже инициализировать
переменную значением выражения при условии, что значения всех компонентов
выражения известны во время компиляции:
int a=5; //инициализирует переменную а значением 5
int b=a; //инициализирует переменную b значением 5
float c=2.5; //инициализирует
переменную c значением 2.5
float d=a+b+c;//инициализирует переменную d значением
12.5
Если объявление переменной a
переместить в конец этого списка операторов, то инициализации переменных b и d станут недействительными, поскольку значение
переменной a не будет известно в то
время, когда компилятор будет пытаться проинициализировать эти две переменные.
Описание нескольких переменных
Если несколько переменных имеют один тип, то их можно описать в одной
строке через запятую. Например:
int a,b;
unsigned short x,y;
float k,l,m;
Также в одной строке можно описать несколько переменных с их одновременной
инициализацией:
int a=-1, b=6;
short x=0, y=6;
float k=0.12, l=3.68, m=125.365; (начало)
4.
Операторы и математические функции
В C++ определены следующие арифметические операторы.
+ cложение;
– вычитание;
* умножение
/ деление
% деление по модулю
– – декремент (уменьшение на 1)
++ инкремент (увеличение на 1).
Действие операторов +, –, * и / совпадает с действием аналогичных операторов
в алгебре. Их можно применять к данным любого встроенного числового типа.
После применения оператора деления (/) к целому числу остаток будет отброшен.
Например, результат целочисленного деления 10/3 будет равен 3. Остаток от
деления можно получить с помощью оператора деления по модулю (%). Например,
10%3 равно 1. Это означает, что в С++ оператор % нельзя применять к
нецелочисленным типам данных.
Операторы инкремента (++) и декремента (– –) обладают очень интересными
свойствами. Поэтому им следует уделить особое внимание.
Оператор инкремента выполняет сложение операнда с числом 1, а оператор
декремента вычитает 1 из своего операнда. Это значит, что инструкция:
х = х + 1;
аналогична такой инструкции:
++х;
А инструкция:
х = х –1;
аналогична такой инструкции:
– – х;
Операторы инкремента и декремента могут стоять как перед своим операндом
(префиксная форма), так и после него (постфиксная форма). Например, инструкцию
х = х + 1;
можно переписать в виде префиксной
++х; //префиксная форма оператора инкремента
или постфиксной формы:
х++; //постфиксная форма оператора инкремента
В предыдущем примере не имело значения, в какой форме был применен оператор
инкремента: префиксной или постфиксной. Но если оператор инкремента или
декремента используется как часть большого выражения, то форма его применения
очень важна. Если такой оператор применен в префиксной форме, то C++ сначала
выполнит эту операцию, чтобы операнд получил новое значение, которое затем будет
использовано остальной частью выражения. Если же оператор применен в
постфиксной форме, то С++ использует в выражении его старое значение, а затем
выполнит операцию, в результате которой операнд обретет новое значение.
Математические функции
В языке С++ имеются специальные функции для расчета алгебраических
выражений. Все такие функции находятся в отдельном заголовочном файле math.h.
Поэтому для использования функций в коде программы необходимо подключить данный
файл с помощью директивы
#include <math.h>
Приведем основные алгебраические функции С++.
abs(x) - модуль целого числа;
labs(x) - модуль «длинного» целого;
fabs(x) - модуль числа с плавающей точкой;
sqrt(x) - извлечение квадратного корня;
pow(x,y) - возведение x в степень y;
cos(x) - косинус;
sin(x) - синус;
tan(x) - тангенс;
acos(x) - арккосинус;
asin(x) - арксинус;
atan(x) - арктангенс;
exp(x) - экспонента в степени
x;
log(x) - натуральный логарифм;
log10(x) - десятичный логарифм;
round(x) – округление числа x по правилам арифметики,
то есть round(1.5) == 2, round(-1.5) == -2
floor(x) – округление числа x вниз, при этом floor(1.5) == 1, floor(-1.5) == -2
ceil(x) – округление числа x вверх, при этом ceil(1.5) == 2, ceil(-1.5) == -1
При возведении числа в дробную степень, знаменатель дробной степени нужно
записывать в вещественном виде. Например: квадратный
корень из а записывается так: pow(a,1/2.0)
Продемонстрируем использование функций на примерах.
|
|
y=(a+pow(b,2))/(sin(x)-4) |
|
|
y=(sqrt(pow(a,3)+pow(b,2))-7)/(exp(4*x-1)+log(4*x)) |
|
|
y=(sin(pow(x,2))+pow(tan(z)))/fabs(pow(3*a,1/3)-exp(b+3))+pow(log(pow(b-2,2)),5) (начало) |
5.
Операторы ввода/вывода на языке С++
Для вывода сообщения на экран используется следующий оператор C++:
cout<<”текст”;
Оператор cout
находится в заголовочном файле iostream.h. Поэтому для его использования данный файл нужно подключить с помощью
директивы:
#include <iostream.h>
Информация, заключенная в двойные кавычки, является сообщением, которое
должно быть выведено на экран. В языке C++ любая последовательность символов,
заключенная в двойные кавычки, называется строкой потому, что она состоит из нескольких
символов, соединяемых вместе в более крупный блок (элемент).
Строка в операторе cout может
содержать так называемые подстановочные
символы – символы, которых нет на клавиатуре или они заняты под ключевые
символы в тексте программы. Перед каждым таким подстановочным символов ставится
символ «\».
Приведем перечень таких символов:
\a – звуковой сигнал
\n – переход на новую строку
\t – горизонтальная табуляция
\v – вертикальная табуляция
\\ - обратный слеш
\’ – одинарная кавычка
\” – двойная кавычка
\? – знак вопроса.
Например, оператор вида:
cout>>“пример\nтекста”;
Слово «пример» выведет на одной строке, а слово «текста» на другой.
Оператор вида:
cout>>“магазин\«чайка\»”;
Слово «чайка» отобразит в двойных кавычках.
Кроме текста оператор может выводить на экран значения переменных,
комбинируя их с текстом.
int a=10, b=12;
cout<<”a=”<<a<<”,
b=”<<b
Форматированный
вывод
Для выдачи значений заданной длины или точности оператор cout имеет ряд настроек:
cout.width(число) – общая длина выводимого
значения, т.е. количество позиций, которые занимает число. Свободные позиции
будут заполнены пробелами.
cout.precision(число) – количество
знаков в числе
cout.fill(‘символ-заполнитель’) –
символ, которым заполняются лишние позиции на экране
Настройка cout.width после
выполнения одного оператора вывода сбрасывается в начальное значение. Поэтому
ее приходится указывать отдельно для каждой переменной или строки.
Настройки этих параметров должны проводиться до вызова оператора вывода.
Например:
//описываем переменные
float a=125.478, b=625.365;
//задаем количество знаков в числе
cout.precision(4);
//задаем заполнитель для лишних позиций
cout.fill(‘0’);
//выдаем значения переменных на экран
//выводим текст-подсказку
cout<<”a=”;
//задаем общую длину для числа
cout.width(8);
//выводим значение переменной a
cout<<a;
//выводим текст-подсказку
cout<<” b=”;
//задаем общую длину для числа
cout.width(8);
//выводим значение переменной b
cout<<b;
Регулировка ширины поля (width) и заполнителя (fill) имеет смысл при выдаче данных в таблицу. Чаще всего можно обойтись только
настройкой precision.
Для округления числа (переменной) до определенного количества знаков после
запятой, можно использовать следующую запись:
round(переменная*100)/100
При выводе переменной b вместо команды cout<<b; использовать команду
cout<<round(c*100)/100;
Библиотека iomanip.h
В заголовочном файле iomanip.h определены
некоторые манипуляторы потокового ввода/вывода. Список самых популярных
манипуляторов:
setprecision(число) – задает количество знаков после запятой при
выводе чисел с плавающей точкой
setw(число) – задает ширину поля вывода (как и setprecision –
только работает не только с числами)
setfill(‘символ-заполнитель’)
– задает символ, которым будут заполняться
пробелы в выводимом тексте
setbase(число) – задает систему счисления, в которой будет
выводиться число. Необходимо указать в скобках 2, 8, 16 – вид системы
счисления.
oct –
аналогично setbase(8) – вывод в восьмеричной системе счисления
dec – аналогично setbase(10) – вывод в десятеричной
системе счисления
hex – аналогично setbase(16) – вывод в шестнадцатеричной
системе счисления
left – выравнивание выводимого текста по левому краю
right – выравнивание выводимого текста по правому краю
fixed – выводит число с плавающей точкой, как число с
фиксированной точкой
Примеры использования манипуляторов:
//описание числовых переменных
float a = 1.78956;
int b = 15;
//описание строковой переменной
char str[] = "Это
манипуляторы\n";
//вывод вещественного числа с четырьмя
знаками после запятой
cout<<"Число с плавающей запятой
"<< fixed<< setprecision(4)<<a<< endl;
//задается ширина строки в 20 символов
//строка str содержит 17 символов, оставшиеся
3 символа заполнятся #
cout<<setw(20)<<setfill('#')<<str<<endl;
//вывод числа b в восьмеричной системе счисления
cout<<setbase(8)<<b<<endl;
//вывод числа b в десятичной системе счисления
cout<<setbase(10)<<b<<endl;
//вывод числа b в шестнадцатеричной системе
счисления
cout<<setbase(16)<<b<<endl;
//описание числовых переменных
int с = 15;
float d = 12.03;
//вывод числа b в восьмеричной системе счисления
cout<<oct<<c<<endl;
//вывод числа b в десятичной системе счисления
cout<<dec<<c<<endl;
//вывод числа b в шестнадцатеричной системе
счисления
cout<<hex<<c<<endl;
//для вывода числа d отводится
ширина в 10 позиций, задается выравнивание по левому краю
//устанавливается 3 знака после запятой
cout<<setw(10)<<left<<fixed<<setprecision(3)<<d<<endl;
Очистка экрана
Язык С++ имеет функцию, позволяющую очищать экран от текстовой информации.
Эта функция имеет вид:
clrscr();
Функция clrscr() находится в заголовочном
файле conio.h. Поэтому для ее
использования данный файл должен быть подключен с помощью директивы:
#include <conio.h>
Для очистки экрана можно использовать команду
system (”cls”) ;
Команда system() используется для вызова команды операционной системы из программы на C / C ++.
Недостатки использования системной команды:
1) ресурсоемкий вызов функции
2) использование system () делает программу
непереносимой, т. е. это работает только в системах, в которых есть команда
pause на системном уровне, таких как DOS или Windows. Но не Linux, MAC OSX и
большинство других.
Организация паузы для просмотра
результата
После выполнения программы обычно происходит автоматичский возврат в
окно с исходным текстом. Это не позволяет просмотреть результат, который
программа выдает на экран. Выходом из этой ситуации может быть использование
клавиш Alt+F5, при
нажатии на которые происходит скрытие окна с кодом программы. Повторное нажатие
на эти клавиши возвращает окно с кодом на экран.
Однако, если создать исполняемый EXE файл, то использовать эти клавиши будет невозможно и
результат останется невидимым для пользователя.
Для решения данной проблемы в конце программы можно добавлять функцию,
которая приостанавливает работу до нажатия любой клавиши. Эта функция имеет
вид:
getch();
Данная функция находится в заголовочном файле conio.h. Поэтому для ее использования данный файл должен
быть подключен с помощью директивы:
#include <conio.h>
Оператор ввода данных с
клавиатуры
Для вода данных с клавиатуры в С++
имеется оператор:
cin>>переменная;
Данный оператор приостанавливает работу программы
и ждет пока пользователь не введет значение переменной и не нажмет ENTER.
C помощью одного оператора можно ввести значения нескольких переменных. Для
этого оператор записывают в виде:
cin>>переменная1>>переменная2>>.
. .>>переменнаяn;
При запуске программы каждое значение вводится
через пробел и в конце нажимают ENTER.
Оператор cout
находится в заголовочном файле iostream.h. Поэтому для его использования данный файл нужно подключить с помощью
директивы:
#include <iostream.h> (начало)
Для демонстрации решим одну задачу. Составить программу для нахождения значения функции:
c=sina+cos2b
Программа может иметь вид:
//подключаем
файл для организации ввода/вывода
#include
<iostream.h>
//подключаем
файл для использования алгебраических функций
#include
<math.h>
//заголовок
главной программы
int main()
{
//отображение
русских символов
system("chcp 1251>nul");
//описываем
три переменные вещественного типа
float a,b,c;
//выдаем
текстовую подсказку на экран
cout<<"Введите
значения a и b:";
//запрашиваем
ввод с клавиатуры двух переменных: a и b
cin>>a>>b;
//считаем
значение функции
c=sin(a)+pow(cos(b),2);
//устанавливаем
количество знаков (3) для вывода результата
cout.precision(3);
//выводим
результат на экран
cout<<"Функция
равна:"<<c<<"\n";
cout<<"Для
продолжения нажмите любую клавишу. . .";
//делаем
паузу для просмотра результата
system("pause");
//завершаем
работу главной программы
return 0;
}