- •2. Структура программы
- •2.1. Объявление переменной
- •2.1.1. Константы
- •2.1.2. Объявление typedef
- •2.2. Объявление и определение функции
- •2.2.1. Встраиваемые функции
- •2.2.2. Параметры функций по умолчанию
- •2.2.3. Параметры программы
- •2.2.4. Функции с переменным числом параметров
- •2.3. Препроцессор
- •2.3.1. Включение файлов
- •2.3.2. Макроподстановки
- •2.3.3. Условная компиляция
- •3. Пример
- •Первый вариант – обычный способ
- •Второй вариант – как на Паскале
- •Третий вариант – весь алгоритм помещен в заголовок цикла for
- •3.2. Функция с переменным числом параметров, аналогичная функции printf
- •Тема 1.1. Структура программы. Типы данных
Тема 1.1. Структура программы. Типы данных
Цель изучения темы: изучить структуру программы, использование данных различного типа, директивы препроцессора.
структура программы
типы данных
использование констант
директива define
директива include
Структура программы
Разберите структуру программ на конкретном примере. Программа рассчитывает площадь треугольника по трем сторонам. Используется формула
,
где a, b, c - длины сторон треугольника, p - полупериметр
В качестве операторных скобок используются фигурные скобки.
В конце каждой команды ставится точка с запятой.
Оператор присваивания обозначается знаком =.
А для сравнения двух значений используется двойной знак равенства ==.
Команды могут начинаться с любой позиции.
Для улучшения восприятия можно вставлять в программу пустые строки.
Если комментарий помещается на одной строке, перед ним ставится символ //.
Второй вариант - комментарий занимает несколько строк, тогда он начинается с символов /*, а заканчивается символами */
Команда cout выводит информацию на стандартное устройство вывода. Этим устройством является экран, если Вы не переназначали стандартное устройство.
Формат команды:
cout << data [<<data];
data - переменная, константа, выражение или комбинация всех трех типов.
При выводе символьных строк они берутся в двойные кавычки. В команде использованы управляющие последовательности \t (табуляция) и \n (возврат каретки).
Вы можете использовать и другие управляющие последовательности:
Оператор cin позволяет вводить значения переменных.
Формат команды
cin [>> переменная];
Информацию о командах cout и cin содержит файл iostream.h. Поэтому его необходимо указывать в директиве include.
Заглавные и прописные буквы имеют более существенное значение, чем в большинстве языков программирования. Все зарезервированные слова пишутся прописными буквами. В данном примере это: include, float, cout и т.д. Если вы наберете их заглавными, то компилятор C++ воспримет их как имена переменных. Имена переменных могут быть написаны как прописными, так и заглавными буквами. Причем переменные alfa, Аlfa, aLfa считаются различными переменными. При описании переменной указывается ее тип, имя и, возможно, значение.
Пример.
float a=0, b=10.5;
Переменные a, b описываются как длинные с плавающей точкой, а получает значение 0, b - 10.5
Переменные могут быть описаны в каком-либо модуле (тогда они являются локальными), или вне модуля (тогда они глобальные)
В примере все переменные описаны внутри главного модуля и являются локальными.
Пример глобальных переменных:
float a,b,c;
float p,s;
main()
{
.....
}
Типы данных
С++ содержит большое количество различных типов.
Наибольший интерес для Вас будет представляет тип char, int, float.
Беззнаковый тип может принимать только положительные значения.
Символьный тип предназначен для хранения 1 символа.
В ранних версиях С++ не специального логического типа любое ненулевое значение считается истинным, нулевое - ложным.
Замечание. На различных моделях компьютеров диапазон может значительно отличаться от приведенного.
Использование констант
Константа может принадлежать к любому из выше перечисленных типов, а так же быть строковой константой. Строковая константа не имеет соответствующего типа. Она всегда заключается в двойные кавычки.
Примеры:
"С++ Programming" "123" " " "423 Е."
Любая строка символов или одиночный символ, заключенный в кавычки интерпретируется как символьная строка.
Все строковые константы заканчиваются нулем. Вы не увидите нуля. Однако С++ проверяет, что в конце строки в памяти находится ноль. Так располагается строка "Program" в памяти:
Вам не нужно беспокоится о занесении нуля в конец строковой константы, С++ сам сделает это при занесении строки в память. Ноль ограничитель строки очень важен, т.к. без него было бы не понятно, где оканчивается строка.
Можно пользоваться также символьными константами. Символьная константа заключается в одинарные кавычки
Примеры.
'w' 'W' 'C' '='
C++ не добавляет ограничитель в конец символьной константы.
Константы 'R' и "R" сильно отличаются друг от друга:
Символьной константе можно присваивать как символ, так и число.
Пример.
char c;
c=84;
В с будет храниться символ T. Т.к. он имеет 84 по таблице ASCII.
Допустимы и арифметические операции:
Пример.
a='T'+5;
char a;
И наоборот целой переменной можно присвоить символ. Тогда в ней окажется ASCII номер символа.
В переменную a будет размещен символ Y, который имеет номер 89 по таблице ASCII.
Пример.
int i='P';
В переменной i окажется число 80.
Директива define
Директива препроцессора #define широко используется в C++. Работает как обыкновенная команда текстового редактора найти и заменить.
Формат:
#include АРГУМЕНТ1 аргумент2
АРГУМЕНТ 1 - одно слово, не содержащее пробелов. Для работы в имени первого аргумента традиционно используются большие буквы. АРГУМЕНТ1 отделяет от аргумента2 по крайней мере один пробел. Аргумент2 может быть любым символом словом или фразой, может содержать пробелы или любые символы, которые можно набрать на клавиатуре. Не ставьте в конце директивы define точку с запятой, т.к. это не выполняемый оператор, а директива препроцессора.
Пример.
Программа рассчитывает выражение:
z=(log2x+logcy)/ logc+2(x+y)
Для расчета logab используется формула:
logab=lnb/lna
В программе logab записывается в форме lg(b,a)
#include <iostream.h>
#include <iostream.h>
#include <math.h>
#define LG(b,a) log(b)/log(a)
main()
{
float x,y,c;
float z;
cout <<"\n Введите значение x,y,c ";
cin >>x>>y>>c;
z=(LG(x,2)+LG(y,c))/LG(x+y,c+2);
cout <<"\n znachenie z="<< z;
return 0;
}
Директива include
Директива препроцессора #include используется для включения текстовых файлов в текст программы. Имя файла указывается в угловых <> или двойных кавычках " ".
Угловые кавычки означают, что файл находится в стандартной папке INCLUDE, двойные кавычки, что файл находится в текущей папке. Директива include обычно используется для подключения библиотек.
Вопросы для самоконтроля:
Для чего используются директивы include и define?
Какой знак ставиться в конце каждого оператора?
Как выделить комментарии в программе?
Что означает оператор cout << "\n\tРезультаты работы программы \n\t х=\t" << x;
Как будет размещена информация на экране.
Перечислите управляющие последовательности
Какой оператор может быть использован для ввода значения в переменную?
Что означает двойной знак равенства?
Какой оператор используется для присвоения значения?
Чем различаются типы int и unsigned int?
