- •Этапы создания исполняемой программы
- •Идентификаторы
- •Ключевые слова
- •Комментарии
- •Структура программы
- •Вывод данных
- •Ввод данных
- •Вопросы для самоконтроля
- •Тема 1.1(2). Типы данных. Константы и переменные
- •Основные (стандартные) типы данных
- •Область действия переменных
- •1.3.1. Математические операции
- •1.3.2. Простое присваивание
- •1.3.3. Составное (сложное) присваивание
- •1.3.4. Операция приведения (преобразования) типов
- •1.3.5. Операции отношения
- •1.3.7. Операция sizeof
- •1.3.8. Операция "запятая" (,)
- •1.3.9. Условная операция (?:)
- •1.3.10. Указатель. Определение адреса переменной
- •1.3.11. Директива define
- •1.3.12. Директива include
- •1.3.13. Примеры программ
- •1.3.14. Вопросы для самоконтроля
- •Тема 1.3. Программирование алгоритмов различной структуры
- •Базовые конструкции структурного программирования
- •Операторы ветвления
- •1.4.1. Условный оператор if
- •If (условие) оператор_1; else оператор_2;
- •If (условие) оператор_1;
- •1.4.2. Оператор выбора switch
- •Операторы цикла
- •1.4.3. Оператор while
- •1.4.4. Оператор do...While
- •1.4.5. Оператор for
- •1.4.6. Функция exit(), операторы break, continue, return
- •Стандартные математические функции
- •Тема 1.4. Ввод-вывод данных
- •Функции get() и put()
- •Функция getch()
- •Функция printf
- •Функция sprintf()
- •Тема 1.5. Функции. Локальные и глобальные переменные. Способы передачи данных.
- •1.5.1. Видимость переменных
- •1.5.2. Определение функции
- •1.5.3. Функция main
- •1.5.4. Вызов функции
- •1.5.5. Способы передачи данных
- •1.5.6. Возвращаемые значения функции
- •1.5.7. Использование прототипов функций
- •Тема 1.6(1). Массивы и указатели
- •Объявление массива
- •Доступ к элементам массива
- •Многомерные массивы
- •Указатели
- •Тема 1.6(2). Структуры и строки
- •1.6.1. Структуры
- •1 Способ – по шаблону.
- •2 Способ – при объявлении (описании) шаблона.
- •1.6.2. Способы реализации строк
- •1.6.3. Строковые константы
- •1.6.4. Указатель на символьную строку
- •1.6.5. Массив символов
- •1.6.6. Некоторые функции для работы со строками
- •1.6.7. Некоторые функции проверки и преобразования символов
- •Тема 1.7. Работа с памятью
- •Функция malloc
- •Функция free
- •Операция new
- •Операция delete
- •Тема 1.10. Динамические структуры
- •Разновидности динамических структур
- •Примеры программ (фрагментов программ) для работы с динамическими структурами
1.3.11. Директива define
Директива препроцессора #define широко используется в C++. Работает, как обыкновенная команда текстового редактора найти и заменить.
Формат:
# define АРГУМЕНТ1 аргумент2
где АРГУМЕНТ 1 – одно слово, не содержащее пробелов; для работы в имени первого аргумента традиционно используются большие буквы; АРГУМЕНТ1 отделяет от аргумента2 по крайней мере один пробел.
аргумент2 может быть любым символом, словом или фразой, может содержать пробелы или любые символы, которые можно набрать на клавиатуре.
Замечание
В конце директивы не ставится точка с запятой, т.к. это не выполняемый оператор, а директива препроцессора.
Пример:
Программа рассчитывает выражение z=(log2x+logcy)/ logc+2(x+y)
Для расчета logab используется формула:
logab=lnb/lna
В программе logab записывается в форме lg(b,a)
#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;
}
Проблемные ситуации
Иногда возникают проблемы при использовании директивы препроцессора define. Для определенности рекомендуется использовать дополнительные круглые скобки. Например, директива для поиска минимального из двух чисел:
#define min(x,y) ( (x>y)? x : y )
1.3.12. Директива include
Директива препроцессора include используется для включения текстовых файлов в текст программы.
Формат:
# include <имя файла>
или
# include “имя файла”
Угловые кавычки означают, что файл находится в стандартной папке INCLUDE, двойные кавычки – что файл находится в текущей папке.
Директива include обычно используется для подключения библиотек.
1.3.13. Примеры программ
Пример 1
Выведем значения переменной и ее адреса в памяти
#include <iostream.h>
main()
{
int *c; int d; // с - это указатель на число типа int
d=45; c=&d; // переменной с присваивается адрес переменной d
cout << "\n Адрес: " << с<< "\n 3начение по адресу с: " << *с <<"\n 3начение d: " << d;
return 0;
}
Пример 2:
Изменим значение переменной двумя способами:
1) с использованием имени переменной.
2) с использованием адреса переменной.
#include <iostream.h>
main()
{
int *c; int d;
c=&d; // переменной с присваивается адрес переменной d
d=105; // первый способ
*с=105; // второй способ
cout <<"\n прочитаем значение переменной через ее имя "<< d;
cout <<"\n прочитаем значение переменную через ее адрес "<<*с;
return 0;
}
1.3.14. Вопросы для самоконтроля
-
Какие результаты появятся на экране?
-
cout << 9/2 ;
cout << 9.0/2 ;
-
Чему будет равен y?
float a=1, b=2, c=3, y=4;
a) y *=a;
б) y /= 2;
в) y- -;
г) - - y;
-
Как определить, сколько байт в памяти занимает переменная типа long int?
-
Запишите при помощи оператора ?: действия: "Если х больше нуля, y присвоить значение x, иначе значение -x".
-
Что представляет собой z?
int * z;
-
Как занести значение 8 по адресу z?
int *z;
-
Как определить адрес переменной b в памяти?
int b;