- •Управление esc – последовательность (с примерами)
- •4. Определение констант и их характеристика (const,define,enum)
- •5. Форматные потоки в с. Функции fPrintf(), Fscanf(), и модификации (с примерами). Спецификаторы
- •7. Перегруженные операции.
- •8. Инструкция ветвления. (пример)
- •9. Инструкция switch()
- •10. Применение инструкции switch() для создания текстового меню.
- •11. Инструкция цикла.
- •12. Инструкция перехода.
- •13. Указатели. Операции над указателями. Косвенная адресация.
- •14. Ссылки (пример)
- •15. Статические числовые одномерные
- •16. Статические числовые двумерные массивы.
- •17. Динамическая память.
- •18. Выделение памяти под динамический одномерный и двумерный массив.
- •19. Алгоритм удаления и добавления данных в массив.
- •20. Глобальные, локальные, статические, внешние переменные.
- •21. Классы памяти.
- •22. Формальные и фактические параметры.
- •23. Функции.
- •24. Виды передачи параметров в функцию.
- •25.Функции и массивы
- •26. Функции с переменным числом параметров.
- •27. Шаблоны функции.
- •28.Рекурсии. Фреймы.
- •29. Функция Main()
- •30. Стеки.
- •31. Очереди.
- •33. Строки, как массив символов.
- •34. Функции ввода строковых переменных.
- •35.Основные функции обработки строковых переменных.
- •37. Функции преобразования типов.
- •38. Строки типа string.
- •40. Функции работы с памятью. Memcmp - сравнивает две области памяти
- •41. Структуры
- •42. Вложенные структуры.
- •43. Объединения (union)
- •44.Передача переменных определенных пользователем в функцию.
- •50. Функция определения конца файла.
- •51. Файловый поток.
- •52. Функции tellg и ftell
- •53. Установка файлового указателя
- •55. Обработка текстовых файлов.
- •56. Бинарный файл.
22. Формальные и фактические параметры.
Формальные параметры - это переменные, фиктивно (формально) присутствующие в процедуре и определяющие тип и место подстановки фактических параметров.
Фактические параметры - это реальные объекты программы, заменяющие в теле процедуры при ее вызове формальные параметр.
Формальные параметры подпрограммы указывают, с какими параметрами следует обращаться к этой подпрограмме (количество параметров, их последовательность, типы). Они задаются в заголовке подпрограммы в виде списка формальных параметров, разбитого на группы, разделенные точками с запятыми. В группу формальных параметров включаются однотипные параметры одной категории.
Все формальные параметры можно разбить на четыре категории:
- параметры-значения (эти параметры подпрограмма может изменить в основной подпрограмме);
- параметры-переменные (эти параметры подпрограмма может изменить в основной программе);
- параметры-константы (только в версии 7.0);
- параметры-процедуры и параметры-функции (т.е. процедурного типа).
Для каждого формального параметра следует указать имя и, как правило, тип, а в случае параметра-переменной или параметра-константы - категорию. Имена параметров могут быть любыми, в том числе и совпадать с именами объектов программы. Необходимо лишь помнить, что в этом случае параметр основной программы с таким именем становится недоступным для непосредственного использования подпрограммой. Тип формального параметра может быть практически любым, однако в заголовке подпрограммы нельзя вводить новый тип.
Например, нельзя писать
Function SUMM (A: array[1..100] of Real): Real;
Чтобы правильно записать этот заголовок, следует в основной программе ввести тип-массив, а затем использовать его в заголовке:
Type aArr = array[1..100] of real;
Function SUMM (A: aArr): Real;
При обращении к подпрограмме формальные параметры заменяются на соответствующие фактические вызывающей программы или подпрограммы.
23. Функции.
Функция - независимая совокупность объявлений операторов, обычно предназначенная для выполнения определенной задачи.
Объявление представляет собой заголовок функции. В этом заголовке должны быть указаны:
1. Тип возвращаемого функцией значения;
2. Имя функции (идентификатор);
3. В круглых скобках типы и имена формальных параметров;
4. Объявление заканчивается ‘;’.
- определение. Включает в себя заголовок и блок (‘;’ после блока не ставится). Внутри блока находятся описания локальных переменных и код реализации функции (т.е. действия). Блок заключается в фигурные скобки.
Функция может вызываться в операторе присваивания, в качестве параметров других функций , и самостоятельно (как процедура в Паскале).
Функции в С++ равноправны, любая функция может быть вызвана из любой другой, допускается рекурсивный вызов функций .
Функция main представляет собой точку входа в программу (т.е. ее компилятор запускает первой).
Для возврата результата функции используется зарезервированное слово return с последующим выражением, которое подсчитывается и его результат ставится в соответствие вызову функции .
Объявление функции без тела программы называется прототипом.
int IfRus(char c)
Общий формат определения функций:
[спецификатор типа] Имя [(список параметров)]
Если спецификатор типа не используется, то считается, что функция возвращает int
Список параметров - последовательность объявлений формальных параметров, разделенных запятыми.
Формальные параметры - переменные, которые принимают значения, переданные функции во время вызова.
Имя(, …) - у функции переменное число аргументов.
Однако для таких функций предполагается, что функция имеет по крайней мере столько аргументов, сколько формальных параметров задано перед , …
Если функция не возвращает значений, то спецификатор типа = void
Общий формат вызова функции:
выражение ([список выражений])
Рекурсивные вызовы.
Любая функция может быть вызвана рекурсивно, то есть она может вызывать саму себя.
Компилятор допускает любое число рекурсивных вызовов. Параметры, предшествующие незавершенным рекурсивным вызовам, недоступны.
long Fact(int n)
{Return (n<=1)?1: n*Fact(n-1);}
Вызов функции с переменным числом аргументов.
В вызове функции задается любое число аргументов, все аргументы помещаются в стеке. Программист сам отвечает за выбор доп-х аргументов из стека и определение их кол-ва.
va_start, va_arg, va_end, va_list
int average (int first
{int count=0, sum=0, i=first;
va_list marker;
va_start (marker,first);
while (i:=-1)
{ sum+=i; count++;
i=va_arg(marker,int); }
va_end(marker); return (sum?(sum/count):0);}
int A
A=average(1,2,3,4,-1)