Программирование
Шрифт:
t = ((i&j) > (s[i]||j)?(i&j): (s[i]||j); а если скобок нет – фрагментом
t = (i&j>s[i]||j)?i&j: s[i]||j;
где условное выражение вычисляется в другом порядке.
Директива #undef применяется для отмены действия директивы #define. Синтаксис данной директивы следующий: #undef идентификатор.
Директива отменяет операцию текущего определения #define для определенного идентификатора.
19. Рекурсия
Функция является рекурсивной, когда во время обработки появляется ее
Прямая (непосредственная) рекурсия – это вызов функции внутри тела этой функции.
int a
{…..a…..}
Косвенная рекурсия – это рекурсия, которая осуществляет рекурсивный вызов функции через цепочку вызова других функций. Все функции, которые входят в цепочку, тоже являются рекурсивными. Рассмотрим пример:
a{…..b…..}
b{…..c…..}
c{…..a…..}.
Все представленные функции a, b, c считаются рекурсивными, так как в случае вызова одной из них производится вызов других и самой себя.
Последовательность вызовов процедуры tn, если m = 3, можно проиллюстрировать древовидной структурой (рис. 2). Всякий раз при вызове процедуры tn под параметры n, i, j, w определяется память и запоминается место возврата. В случае возврата из процедуры tn память, которая выделяется под параметры n, i, j, w, освобождается и становится доступной память, которая выделена под параметры n, i, j, w предыдущим вызовом, а управление передается в место возврата.
Рис. Последовательность вызовов процедуры tn
Очень часто рекурсивные функции можно заменить нерекурсивными функциями или фрагментами. Это производится путем использования стеков для хранения точек вызова и вспомогательных переменных.
20. Знакомство с языком СИ++
Рассмотрим ряд программ и частей программ на C++.
Прежде всего, рассмотрим программу, которая выводит строку выдачи:
#include
main
{
cout << «Hello, world\n»; }
Строка #include дает знать компилятору, что он включил обычные возможности потока ввода и вывода, которые находятся в файле stream.h. Без таких описаний выражение cout << «Hello, world\n» не имело бы смысла. Операция << («поместить в») следует написать первый аргумент во второй (в нашем случае строку «Hello, world\n» в стандартный поток вывода cout). Строка представляет собой последовательность символов, которые заключены в двойные кавычки. В строке символ обратной косой \, после которого идет другой символ, обозначает один специальный символ; в рассмотренном случае \n служит символом новой строки. Получаем, что выводимые символы состоят из Hello, world и перевода строки. Остальная часть программы
main {… }
задает функцию, названную main. Любая программа должна включать в себя функцию с именем main, и действие программы начинается с выполнения этой функции.
Откуда появились
$ CC hello.c $ a.out Hello,world
$
a. out является принимаемым по умолчанию именем исполняемого результата компиляции. Если необходимо назвать программу, можно осуществить это с помощью опции – o:
$ CC hello.c – o hello
$ hello Hello,world
$
21. Комментарии в СИ++
Часто бывает необходимо вставлять в программу текст, который используется в качестве комментария только для читающего программу человека и не учитывается компилятором в программе. В C++ это возможно осуществить одним из двух способов. Символы /* начинают комментарий, который заканчивается символами */. Вся данная последовательность символов эквивалентна символу пропуска. Это очень полезно для многострочных комментариев и изъятия частей программы в процессе редактирования, но стоит учитывать, что комментарии /* */ не могут быть вложенными.
Символы // начинают комментарий, заканчивающийся в конце строки, на которой они появились. Как и в предыдущем случае, вся последовательность символов соответствует пропуску. Такой способ наиболее удобен для коротких комментариев. Символы // можно применять для того, чтобы закомментировать символы /* или */, а символами /* можно закомментировать //.
Любое имя или выражение имеет тип, который определяет операции, которые могут над ними осуществляться. К примеру, описание
int inch;
дает понять, что inch имеет тип int, т. е. inch – целая переменная.
Описание представляет собой оператор, который вводит имя в программе. Описание определяет тип этого имени. Тип назначает правильное использование имени или выражения. Для целых определены такие операции: +, —, * и /. После включения файла stream.h объект типа int способен также быть вторым операндом <<, когда первый операнд ostream.
Тип объекта задает не только применяемые к нему операции, но и смысл этих операций. К примеру, оператор:
cout << inch << «in=» << inch*2.54 << «cm\n»; правильно обрабатывает четыре вводных значения разными способами. Строки печатаются буквально, а целое inch и значение с плавающей точкой inch*2.54 изменяются из их внутреннего представления в подходящее для человеческого восприятия символьное представление. В C++ существует несколько основных типов и несколько способов создавать новые.
Основные типы, которые наиболее непосредственно отвечают средствам аппаратного обеспечения, имеют вид: char short int long float double.
Он тебя не любит(?)
Любовные романы:
современные любовные романы
рейтинг книги
Рассвет русского царства. Книга 2
2. Новая Русь
Фантастика:
альтернативная история
попаданцы
историческое фэнтези
рейтинг книги
Князь Андер Арес 4
4. Андер Арес
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
попаданцы
рейтинг книги
Адаптация
1. Другая сторона
Фантастика:
фэнтези
рейтинг книги
Санин (сборник)
Русская классика XX века
Проза:
русская классическая проза
роман
повесть
рассказ
рейтинг книги
Самые знаменитые произведения писателя в одном томе
Фантастика:
фантастика: прочее
рейтинг книги
Царь-Холод, или Почему вымерзают русские
Научно-образовательная:
политика
рейтинг книги
Русская драматургия XVIII – XIX вв. (Сборник)
Поэзия:
драматургия
рейтинг книги
Неудержимый. Книга XIV
14. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Война. Krieg. 1941—1945. Произведения русских и немецких писателей
Проза:
военная проза
рейтинг книги
Махабхарата: Ревизия смыслов
Анализ индуистских мифов
Религия и эзотерика:
самосовершенствование
религия
буддизм
рейтинг книги
Сборник "Этические уравнения"
Фантастика:
научная фантастика
рейтинг книги
Гоголь в воспоминаниях современников
Документальная литература:
критика
биографии и мемуары
рейтинг книги
Против энтропии (Статьи о литературе)
Документальная литература:
публицистика
рейтинг книги