Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
113
Добавлен:
17.03.2016
Размер:
4.8 Mб
Скачать

Программирование на языке Си

Тема 12. Процедуры

© К.Ю. Поляков, 2007-2008

Сколько координат надо задать?

129

Процедуры

Задача: Построить фигуру:

? Можно ли решить известными методами?

Особенность: Три похожие фигуры. общее: размеры, угол поворота

отличия: координаты, цвет

?

130

Процедуры

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

Применение:

выполнение одинаковых действий в разных местах программы

разбивка программы (или другой процедуры) на подзадачи для лучшего восприятия

Задача

Подзадача1

 

Подзадача2

 

Подзадача3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.1 1.2 1.3 2.1 2.2 2.3 3.1 3.2 3.3

131

Процедуры

Порядок разработки:

выделить одинаковое или похожее (три фигуры)

найти в них общее (размеры, форма, угол поворота) и отличия (координаты, цвет)

отличия записать в виде неизвестных переменных, они будут параметрами процедуры

(x, y-60)

имя

 

параметры

 

процедуры

 

60

void Tr( int x, int y, int c )

 

(x, y) 100 (x+100, y)

{

тело

цвет

 

...

 

 

}

 

координаты

void – «пустой» (некоторые действия)

Процедуры

132

формальные

 

 

 

 

параметры

(x, y-60)

60

(x, y) 100 (x+100, y)

тело процедуры

void Tr( int x, int y, int c )

{

moveto ( x, y ); lineto ( x, y-60 ); lineto ( x+100, y ); lineto ( x, y ); setfillstyle ( 1, c );

floodfill ( x+20, y-20, 15);

}

«Формальные параметры» могут изменяться, заранее неизвестны (обозначаются именами, как переменные).

Программа

133

формальные

 

параметры

 

60

(100,100)

#include <conio. #include <graphics

void Tr( int x, int y, int c)

{

...

100

}

 

 

main()

процедура

 

{

 

 

initwindow (400, 300);

вызовы

Tr (100, 100, COLOR(0,0,255));

процедуры

Tr (200, 100, COLOR(0,255,0));

 

Tr (200, 160, COLOR(255,0,0));

 

getch();

 

closegraph();

}

фактические

 

параметры

134

Процедуры

Особенности:

обычно процедуры расположены выше основной программы

в заголовке процедуры перечисляются формальные параметры, они обозначаются именами, поскольку могут меняться

void Tr( int x, int y, int c )

при вызове процедуры в скобках указывают фактические параметры (числа или арифметические выражения) в том же порядке

Tr ( 200, 100, COLOR(255,0,0));

x

y

c

135

Процедуры

Особенности:

для каждого формального параметра в заголовке процедуры указывают его тип

void A ( int x, float y, char z ) { ... }

внутри процедуры параметры используются так же, как и переменные

в процедуре можно объявлять дополнительные локальные переменные, остальные процедуры не имеют к ним доступа

void A ( int x, float y, char z )

{

локальные

int a2, bbc = 345;

переменные

...

 

}

 

136

Как поменять местами?

Задача: поменять местами

2

содержимое двух чашек.

1

 

3

Задача: поменять местами содержимое двух ячеек

памяти.

x

 

y

c = x;

6

2

4

x = y;

y = c;

? Можно ли обойтись без c?

1

4 c

3

137

Параметры-переменные

Задача: составить процедуру, которая меняет местами

значения двух переменных.

Особенности: надо, чтобы изменения, сделанные в процедуре, стали известны вызывающей программе.

void Swap

a, int

эта процедура

{

 

 

работает с

int c;

 

 

копиями

c = a; a

= c;

параметров

}

main()

 

{

 

x = 1, y = 2

 

int x = 1, y = 2;

 

Swap ( x, y );

 

 

 

printf ( "x = %d,

y = %d", x, y );

}