Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЕКЦИИ Программирование и основы алгоритмизации...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.5 Mб
Скачать

Параметры функции main()

Чтобы в среде Builder работать с консольными программами, нужно проделать следующее. В главном меню выбрать пункт Файл/Новый/Другое. На закладке Новый выбрать Мастер консоли и Ок. Затем с экрана рекомендуется убрать Дерево объектов и Инспектор объектов, чтобы было больше места для Редактора Кода.

На экране - Редактор Кода, в окне которого находится следующий текст:

//---------------------------------------------------

#include <vcl.h>

#pragma hdrstop

//---------------------------------------------------

#pragma argsused

int main(int argc, char* argv[])

{

return 0;

}

//-----------------------------------------------------------

Следовательно, для консольных программ С++Builder создает по умолчанию функцию main(), которая принимает 2 аргумента и возвращает целое число. Функция main() принимает аргументы из командной строки.

Целая переменная argc содержит число параметров, переданных в командной строке. Всегда не меньше 1, т.к. имя программы также считается параметром. Переменная argv является массивом указателей на строки. Этот массив будет содержать каждый из параметров, переданных в командной строке.

Пример.

#iuclude <iostream.h>

#include <conio.h>

//--------------------------------

int main()

{ cout<<”argc=”<<argc<<endl;

for(int i=0; I,argc; i++)

cout<<”параметр ”<<i<<”:=”<<argv[i]<<endl;

getch();

return 0;

}

//----------------------------------

В главном меню выбрать Проект/Компилировать модуль. Программа будет построена, но не запущена. Ok. Затем в главном меню выбрать Запуск/Параметры. В “Параметры” впишем: one two, 3, “four five”, six <Ok>. Затем: “Запуск/Запустить”. На экране получим:

argc=6

параметр 0:=<имя программы>

параметр 1:=one

параметр 2:=two

параметр 3:=3

параметр 4:= four five

параметр 5:=six

Рекурсивные функции

Рекурсивная функция – это функция, которая вызывает себя (прямая рекурсия). При косвенной рекурсии - две или более функций вызывают друг друга.

Если функция вызывает себя, в стеке создается копия значений её параметров, как и при вызове обычной функции, после чего управление передается первому исполняемому оператору функции. При повторном вызове этот процесс повторяется.

Для завершения вычислений рекурсивная функция должна содержать хотя бы одну нерекурсивную ветвь алгоритма, заканчивающуюся оператором возврата. При завершении функции соответствующая часть стека освобождается, и управление передается вызывающей функции, выполнение которой продолжается с точки, следующей за рекурсивным вызовом. Приведем пример рекурсивной функции для вычисления факториала n!=n(n-1)(n-2)……1 и поясним её выполнение.

long fact(long n)

{ if(n==0\\n==1) return 1;

return (n*fact(n-1));

}

Любую рекурсивную функцию можно реализовать без рекурсии:

fact=1;

for(int i=n; i>=1; i--)

fact*=i;

Достоинство рекурсивных функций – компактная запись алгоритма.

Недостатки: 1)расход времени и памяти на повторные вызовы функции и передачу ей копий параметров;

2)опасность переполнения стека.