Подпрограммы

34
Подпрограммы 1. Принцип модульности 2. Область действия переменных 3. Параметры подпрограмм 4. Модули

Upload: denton-rush

Post on 01-Jan-2016

54 views

Category:

Documents


0 download

DESCRIPTION

Подпрограммы. Принцип модульности Область действия переменных Параметры подпрограмм Модули. Принцип модульности. В модульной программе отдельные её части, предназначенные для решения каких-либо частных задач, организованы в подпрограммы - PowerPoint PPT Presentation

TRANSCRIPT

Подпрограммы1. Принцип модульности2. Область действия переменных3. Параметры подпрограмм4. Модули

Принцип модульности

•В модульной программе отдельные её части, предназначенные для решения каких-либо частных задач, организованы в подпрограммы

•Подпрограммы являются основными строительными блоками, из которых собирается программа

Преимущества модульности:

1. один и тот же фрагмент можно использовать многократно как в одной, так и разных программах, не набирая его текст заново

2. программы, состоящие из небольших частей, легче читать, тестировать и отлаживать

• Подпрограмма – это самостоятельный фрагмент программы, к которому можно обратиться по имени

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

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

вызвать• подпрограмма вызывается по имени в том месте

программы, где требуется получить результаты её работы

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

inc (i);у := Sin (x) + 1;

Структура процедуры

Procedure имя (список_параметров); Label ConstTypeVarProcedureFunction

Begin…

End;

Структура функции

Function имя (список_параметров): тип_результата;

Label ConstTypeVarProcedureFunction

Begin…имя := значение;

End;

Область действия переменных • описываются в главной

программе• время жизни: с момента начала

программы и до её завершения• доступны в любом месте

программы, кроме подпрограмм, в которых описаны локальные переменные с такими же именами

Глобальные

• описываются внутри подпрограммы

• время жизни: время выполнения подпрограммы

• могут использоваться только в подпрограмме, в которой описаны, и во всех вложенных в неё подпрограммах

Локальные

Правила определения области действия для переменных подпрограммы

1. действуют все переменные, определённые внутри подпрограммы

2. действуют все переменные окружающего контекста, если их имена отличаются от имен, объявленных внутри подпрограммы

3. локальные переменные процедуры и функции во внешнем окружении действовать не будут никогда

4. в случае совпадения имен глобальной и локальной переменной действовать будет только внутренняя локальная переменная

Параметры подпрограмм

• Список параметров подпрограммы содержится в её заголовке

• Для каждого параметра задаётся имя, тип и способ передачи

• Параметры, имена которых указаны в заголовке подпрограммы, называются формальными

• При обращении к подпрограмме в неё могут передаваться значения разных переменных

• Переменные, имена которых подставляются в оператор вызова подпрограммы при фактическом обращении к ней, называются фактическими параметрами

• Количество и тип фактических параметров должны соответствовать количеству и типу формальных параметров

В Pascal можно выделить четыре вида параметров1. значения2. переменные3. константы4. нетипизированные

Параметр-значение

Имя: тип_данных;

Procedure P (x: Integer);

•Использует способ передачи по значению

•Подпрограмма работает с копией переменной

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

Var Имя: тип_данных;

Procedure P (Var x: Integer);

•Использует способ передачей по адресу

•Подпрограмма работает непосредственно с переменной

Параметр-константа

Const Имя: тип_данных;

Procedure P (Const x: Integer);

•В пределах подпрограммы параметр изменить невозможно

Нетипизированные параметры

•При описании нетипизированных параметров тип не указывается

Procedure P (Const a, b; Var у);

•Передаются всегда по адресу•Перед тем как выполнять в

подпрограмме действия с таким параметром, его требуется привести к какому-либо типу

Var a, b, с, d, e: Word;Procedure Х (а, b, с: Word; Var d: Word);

Var e: Word; Begin

с := a + b; d := c; e := с;WriteLn ('Podprogramma:');WriteLn ('с = ', c, 'd = ', d, 'e = ', e);

End;

Begina := 3; b := 5;x (a, b, c, d);WriteLn (‘Glavnaiya programma:');WriteLn ('с = ', с, 'd = ', d, 'e = ', e);ReadLn;

End.

Модули

•Модуль – подключаемая к программе библиотека ресурсов (типов, констант, переменных и подпрограмм)

•Модуль содержит описание и подпрограммы, которые могут использоваться в различных программах

•Модули бывают стандартные и создаваемые программистом

Решение задач

Задача 1

•Напишите программу, которая в массиве из 20 элементов подсчитывает количество отрицательных элементов. Массив должен заполняться случайными значениями в интервале от -50 до 50.

Алгоритм 1Начало

Вводmas[20], n = 0

i = 0, 19, 1

mas[i] <0

n = n+1

Выводn

Конец

Да

Нет

Используемые в программе переменные•mas – массив целых чисел•i – параметр цикла, целый тип•n – количество отрицательных чисел

Программа 1Program Otr;Uses CRT;Var i, n: Integer;

mas: Array [0..19] Of Integer;BeginClrScr;Randomize;For i := 0 To 19 DoBegin

mas [i] := Random (100)-50;Write (mas[i]: 4);

End;WriteLn;n := 0;For i := 0 To 19 Do

If mas [i]<0 Then n := n+1;WriteLn (‘Otricatelnix elementov: ’, n);ReadLn;End.

Задача 2

•Напишите программу, которая в массиве размером 15х10 для каждого столбца находит минимальный элемент. Массив должен заполняться случайными значениями в интервале от 0 до 120

Алгоритм 2Начало

Вводmas1 [15,

10]mas2 [10]

j =o, 9, 1

i =o, 14, 1

min = mas1 [0, j]

mas1 [i, j] < min

min = mas1 [i, j]

mas2 [j] = min

Выводmas2 [10]

j =o, 9, 1

Конец

Да

Нет

Используемые в программе переменные•mas1 – начальный двухмерный массив

целых чисел•mas2 – одномерный массив, для

хранения минимальных значений•i, j – параметры цикла, целый тип•min – минимальное значение

Программа 2

Program Minimum;Uses CRT;Var i, j, min: Integer;

mas1: Array [0..14, 0..9] Of Integer;mas2: Array [0..9] Of Integer;

BeginClrScr;Randomize;For i := 0 To 14 DoBegin

For j := 0 To 9 DoBegin

mas1 [i, j] := Random (120);Write (mas1 [i, j]: 4);

End;WriteLn;

End;

WriteLn;For j := 0 To 9 DoBegin

min := mas1 [0, j];For i := 0 To 14 Do

If mas1 [i, j]<min Then min := mas1 [i, j];mas2 [j]:= min;

End;For j := 0 To 9 DoWriteLn (‘V ’, j+1, ‘ stolbce minimum element: ’,

mas2 [j]);ReadLn;End.

Задача 3

•Напишите программу, которая во введенной с клавиатуры строке удаляет все символы 'b'. Длина вводимой строки не должна превышать 25 символов. Если символ 'b' не найдены, то должно выводиться сообщение об этом

Алгоритм 3Начало

Вводs [25],

fl =false

i = 1, length (s), 1

s [i] = ‘b’

delete (s, i, 1)fl = truei = i-1

fl

Выводs

Вывод‘Буквы “b” нет’

Конец

Да

Нет

Да Нет

Используемые в программе переменные•s – вводимая строка•i – параметр цикла•fl – флаг (логический), определяет

найден нужный символ или нет

Программа 3

Program bukv_b;Var s: String [25];

i: Integer;fl: boolean;

Beginfl := false;Write (' Vvedite stroku: ');Readln (s);i:=1;

While i <= Length (s) DoBegin

If s [i] = 'b' ThenBegin

Delete (s, i, 1);fl := true;i := i-1;

End;i:=i+1;

End;If fl Then WriteLn ('Poluchennaja stroka: ', s)

Else WriteLn (' Simvol “b” ne naiden');ReadLn;End.