Лекция 2 Технологии разработки программ модульной структуры на С
Структура программы
430.00K
Категория: ПрограммированиеПрограммирование

Технологии разработки программ модульной структуры на С

1. Лекция 2 Технологии разработки программ модульной структуры на С

Цель лекции:
Рассмотреть систематизированные основы знаний о
технологии разработки программ модульной
Учебные вопросы:
1 Особенности разработки алгоритмов и программ
модульной структуры
2 Область видимости переменных
3 Параметры функций

2.

1 Особенности разработки алгоритмов
и программ модульной структуры
Особенности технологии разработки алгоритмов:
̶ определяется состав и назначение модулей, их
входные и выходные параметры (переменные);
̶ каждый модуль алгоритма разрабатывается
отдельно;
̶ в главной программе определяется порядок
обращения
к
модулям,
определение
действительных
значений
параметров,
передаваемых в модули и возвращаемых
значений;

3.

Нисходящее проектирование
N
Начало
s i .
2
i 1
Введите N
Введите N
N
Начало
N
Ввод
данных
S=0
S=0
i=1
Вычисления
i=1
Выдача
результата
S=S+i2
Вычисление
суммы
S=S+i2
Конец
i=i+1
i=i+1
Печать S
Нет
Нет
i>N
i>N
Общая схема
алгоритма
Да
Да
Печать S
Детализация алгоритма
Конец

4.

2 Область видимости переменных
Область действия (видимости) переменной – это
правила, которые устанавливают, какие данные доступны
из данного места программы.
С точки зрения области действия переменных
различают три типа переменных:
̶ глобальные;
̶ локальные;
̶ формальные параметры.

5.

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

6. Структура программы

Главная функция
Глобальные переменные
Функция А
Локальные переменные
{
Операторы подпрограммы
}
Функция В
Локальные переменные
{
Операторы подпрограммы
}
{
Локальные переменные
Операторы... Вызов А ... Вызов В ...
}

7.

Локальные переменные:
̶ это переменные, объявленные внутри функции;
̶ локальная переменная доступна внутри блока, в
котором она объявлена;
̶ локальная переменная существует пока выполняется
блок, в котором эта переменная объявлена ;
̶ при выходе из блока эта переменная (и ее значение)
теряется.
Формальные параметры:
̶ используются в теле функции так же, как локальные
переменные;
̶ Область действия формальных параметров - блок,
являющийся телом функции.

8.

2 Параметры функций
Параметры функций:
̶ формальные параметры;
̶ параметры-значения;
̶ параметры – ссылки.
Формальные параметры:
̶ используются для записи текста программы;
̶ в теле функции являются локальными переменными;
̶ область действия формальных параметров - блок,
являющийся телом функции.

9.

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

10.

Пример разработки функции вычисления максимального
значения из двух целых чисел
ИМЯ(Параметры)
max2 (int a, int b)
Вычисления
ДА
a>b
Возвращаемые
значения
Возврат b
Возврат а
Пример разработки функции вычисления минимального
значения из двух целых чисел
ИМЯ(Параметры)
min2 (int a, int b)
Вычисления
ДА
a<b
Возвращаемые
значения
Возврат а
Возврат b

11.

Классический
Элегантный
#include <iostream>
using namespace std;
int max2(int a, int b)
{
if (a > b) return a;
else return b;
}
int min2(int a, int b)
{
if (a > b) return b;
else return a;
}
#include <iostream>
using namespace std;
int max1(int a, int b)
{
return (a > b) ? a : b;
}
int main()
{
int a = 5, b=4;
printf("max=%d\n", max2(a, b));
printf("min=%d\n", min2(a, b));
getchar();
return 0;
}
int main()
{
int a = 5, b=4;
printf("max=%d\n", max1(a, b));
printf("min=%d\n", min1(a, b));
getchar();
return 0;
}
int min2 (int a, int b)
{
return (a > b) ? b : a;
}

12.

Пример использования параметров-значений в функции
int max (int a, int b)
{
if (a > b)
return(a);
else
return (b);
}
main ()
{
int a, b;
printf ("Введите два целых числа ->
");
scanf("%d %d", &a, &b);
printf ("Максимальное число ->
%d\n", max(a, b));
return 0;
}

13.

1 Разработать алгоритм функция обмена значениями
переменных целого типа
swap(int a, int b)
2 Разработать алгоритм главной программы для проверки
функции обмена значениями переменных целого типа
swap(int a, int b)
Фактические параметры для в главной программе - x, y
3 Разработать программу проверки функции
swap(int a, int b)
Обращение к функции оформить отдельным оператором
swap(x, y);

14.

Пример использования параметров-значений в функции
Ошибка в передаче данных из функции в главную программу через
параметры-переменные
Функция обмена значениями переменных
void swap(int a, int b)
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
int main( )
{
int x = 5, y = 10;
printf (“В начале x = %d и y = %d\n”,
x, y);
swap(x, y);
printf (“После выполнения x = %d и
y = %d\n”, x, y);
}
Переменные, являющиеся параметрами-значениями функции не
передаются в главную программу

15.

16.

Проверка функции
void swap(int a, int b)
{
int tmp;
printf ("В функции до ее выполнения a = %d и b = %d tmp= %d\n", a, b,
tmp);
tmp = a;
a = b;
b = tmp;
printf ("В функции после ее выполнения a = %d и b = %d tmp= %d\n",
a, b, tmp);
}

17.

Параметры – ссылки
Для возможности изменения внутри функции значений
переменных, являющихся параметрами этой функции,
необходимо передавать в функцию не значения этих
переменных, а их адреса.
void swap(int *a, int *b)
{
int tmp;
tmp = * a;
* a = b;
* b = tmp;
}
int main( )
{
int x = 5, y = 10;
printf (“Вначале x = %d и y = %d\n”,
x, y);
swap(&x, &y);
printf (“После выполнения x = %d и
y = %d\n”, x, y);
}

18.

Заключение
В лекции были рассмотрены этапы решения задач на
ЭВМ, особенности технологии разработки программ
модульной структуры, область видимости переменных и
параметры функций
English     Русский Правила