Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Языки программирования (пособие).doc
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
965 Кб
Скачать
☆

3.1.7Название процедуры

Название процедуры – это идентификатор, поэтому оно должно подчиняться правилам создания идентификаторов: состоять из букв, цифр или знака подчеркивания и начинаться с буквы или со знака подчеркивания. Название процедуры может быть любым в рамках данных правил, но оно должно отражать ту задачу, которую решает процедура. Например, если процедура предназначена для сортировки массива, то подходящим названием может быть sort_array или sort, а имена типа fg, f1 или my_proc никак не связаны данной задачей, поэтому их использование нежелательно.

3.1.8Формальные и фактические аргументы

Формальные аргументы процедуры – это аргументы, указываемые при определении процедуры. Формальные аргументы указывают на то, значения каких типов можно передать в процедуру при вызове; они перечисляются в круглых скобках после имени процедуры:

void drawStars(int n) {

for (int i=1; i<=n; i++) {

cout << "*";

}

}

Аргументы процедуры, указываемые при вызове, называются фактическими; их количество, порядок и тип должны быть такими же, как и у формальных аргументов; если данное требование не выполнено, то компилятор выдаст ошибку. Например, следующие строки кода ошибочны:

//Неверное количество фактических аргументов

drawStars();

drawStars(10, 5);

//Неверные типы фактических аргументов

drawStars(10.5);

drawStars("ten");

drawStars('a');

3.1.9Тело процедуры

Тело процедуры – это команды, которые выполняет процедура. Тело процедуры находится внутри фигурных скобок.

void drawStars(int n) {

//Тело процедуры (начало)

for (int i=1; i<=n; i++) {

cout << "*";

}

//Тело процедуры (конец)

}

3.1.10Создание нескольких процедур

В одной программе можно создать несколько функций и процедур, причем эти подпрограммы могут вызывать друг друга. Рассмотрим пример создания трех процедур, одна из которых вызывает две другие, а затем сама она вызывается из функции main(). Первая функция предназначена для вывода 20 букв, вторая – для вывода 20 чисел, а третья вызывает первые две.

#include <iostream>

using namespace std;

void print20Letters() {

for (char letter='a'; letter<'a'+20; letter++) {

cout << letter << " ";

}

}

void print20Numbers() {

for (int number=1; number<=20; number++) {

cout << number << " ";

}

}

void printLettersAndNumbers() {

print20Letters();

print20Numbers();

}

int main() {

printLettersAndNumbers();

system("pause");

return 0;

}

3.1.11Создание заголовочного файла

Мы уже сталкивались с заголовочными файлами, когда подключали библиотеку iostream для работы с функциями ввода/вывода. Эти функции были кем-то созданы, и любой программист может их использовать, подключив эту библиотеку. По аналогии с этими библиотеками можно создать свою библиотеку; для этого нужно выполнить следующие действия:

  • создать текстовый файл (можно отметить его расширением .h);

  • поместить в него определение процедур и функций;

  • подключить файл в программе;

  • вызвать требующиеся функции и процедуры.

3.1.12Контрольные вопросы

  1. Дайте определения процедуры.

  2. Перечислите основные части определения процедуры, объясните их назначение.

  3. Что такое формальные и фактические аргументы?

  4. Может ли одна процедура вызывать другую? Может ли одна процедура быть определена внутри другой?

  5. Что такое заголовочный файл? Для чего нужны заголовочные файлы? Как создать и использовать заголовочный файл?

  6. Приведите пример, когда одна процедура вызывает другую.

  7. Создайте процедуру, выводящую на экран 100 звездочек.

  8. Создайте процедуру, которая принимает в качестве аргумента число звездочек и выводит их на экран.

  9. Создайте заголовочный файл с несколькими процедурами и вызовите их в программе, предварительно подключив файл.

  10. Создайте процедуру, которая принимает в качестве аргумента строку и выводит ее, начиная с конца.