русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Процедуры и функции в Паскале. Подпрограммы на языке Турбо Паскаль

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

В языке Турбо-Паскаль существует большой набор стандартных (библиотечных) процедур и функций.  Процедуры и функции содержатся в стандартных модулях  и   подключаются к любой программе либо с помощью предложения  Uses (например: CRT, GRAPH и др.)  либо автоматически (например, System).

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

Применение подпрограмм позволяет использовать современные технологии конструирования программ: структурное, модульное, объектное. А также  использовать  современные  методы проектирования т.н. нисходящее проектирование. При этом сложная задача разбивается на ряд подзадач,  для каждой из которых составляется набор подпрограмм, из которых компонуется общая программа.

Язык Турбо-Паскаль содержит два типа подпрограмм:

  1. Процедуры.
  2. Функции.

 

Процедуры в Паскале

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

           PROCEDURE <имя>(<сп. форм. пар.>);
                <блок>
где
     PROCEDURE – зарезервированное слово процедура;
<имя>             - имя процедуры, является уникальным, выбирается по общим пра-
вилам, желательно чтобы оно отражало смысл процедуры;
<сп. форм. пар.>   - список формальных параметров т.е. список имен обозначаю-
щих  исходные данные и результат работы процедуры с указани-
ем их типов;
       <блок>            - тело процедуры представляющее разделы описаний и раздел
операторов,  представляющий составной оператор (совокупность
операторов,  заключенных в операторные скобки BEGIN END).

Разделы описаний процедуры содержат те же разделы что и основная программа, в том числе описания подпрограмм низшего уровня (вложенных).

Глобальные объекты – это объекты, описанные в разделах описаний основной программе. Областью их действия является программа и все, содержащиеся в ней подпрограммы.

Локальные объекты – это объекты, описанные в разделах описаний подпрограммы. Областью их действия является подпрограмма и все содержащиеся в ней подпрограммы низшего уровня.

Локальные описания отменяют глобальные.
Оператор вызова процедуры активизирует процедуру.
Он имеет вид:
<имя>(<сп. факт. пар.>);
где:
      <имя> - имя процедуры;
      <сп. факт. пар.> - список фактических параметров.
Это список конкретных значений, имен и выражений подставляемых вместо формальных параметров и передаваемых в подпрограмму, а так же возвращаемые  результаты обработки.
Список фактических параметров может отсутствовать.
Между формальными и фактическими параметрами существует взаимно  - однозначное соответствие по количеству, порядку следования и типу.

 

Виды параметров в Паскале

Различают четыре вида параметров:
- параметры- значения;
   - параметры- переменные;
   - параметры- процедуры;
   - параметры- функции.

Параметры- значения – используются для передачи исходных данных в подпрограмму. Формальные параметры при этом записываются через запятую с указанием их типов. Они получают значения фактических параметров, но не могут передавать свои значения фактическим параметрам.

Параметры- переменные – играют роль как входных, так и выходных (возвращаемых) параметров процедуры. В списке формальных параметров они перечисляются после слова  Var с  указанием их типов.

Параметры- процедуры – указываются после слова Procedure.

Параметры- функции - . указываются после слова Function.

 

Функции в Паскале

Структура описания и механизм использования функции аналогичен  процедуре с учетом некоторых особенностей. Описание состоит из заголовка и блока (тела функции).

           FUNCTION <имя>(<сп. форм. пар.>):<тип>;
                <блок>;
где:  FUNCTION  – зарезервированное слово функция;
<имя> - имя функции, является уникальным, выбирается по общим                                правилам, желательно чтобы оно отражало смысл   функции;
    <сп. форм. пар.>  - список формальных параметров т.е. список имен обозначающих исходные данные функции с указанием их типов;
    <тип> -  тип результата возвращаемого функцией и присваиваемого имени
функции;
   <блок> - тело процедуры представляющее разделы описаний и раздел
операторов, представляющий составной оператор  (совокупность операторов,  заключенных в операторные  скобки BEGIN END).

     Разделы описаний функции содержат те же разделы что и основная программа, в том числе описания подпрограмм низшего уровня (вложенных).
В содержательной части функции ее имени должен быть присвоен результат работы функции.
Вызов функции представляет собой операнд (указатель функции) в отличии от процедуры обращение к которой представляет оператор.
Он имеет вид:
<имя>(<сп. факт. пар.>);
где:
     <имя> - имя функции (указатель);
     <сп. факт. пар.> - список фактических параметров.
Это список конкретных значений, имен и выражений подставляемых вместо формальных параметров и передаваемых в функцию.

 

Отличие процедуры от функции

  1. Функция в отличие от процедуры возвращает единственное скалярное значение
  2. Результат вычисления функции присваивается имени, а процедуре входит в список параметров.
  3. Имя функции имеет тип.
  4. Обращение к функции представляет операнд, а процедуры оператор.

    

 

Пример 14.1.   В файле inp.txt расположены три массива вещественных чисел

-2.1    3.1  -2.4   5.6  5.4  -6.7  3.5  -3.6
2.3  -4.3   2.1   2.5 -3.7  -5.6  4.6    3.5   -7.5
-2.1   4.3  -2.3   7.6  4.5  -8.9  5.7   -4.5    6.8  -5.8

     Вычислить функцию

     где  Max_a, Max_b, Max_c, Sa, Sb, Sc, ka, kb, kc -  максимальный элемент, сумма и количество положительных элементов  соответствующих массивов a, b, и c.

Результат вывести в файл out.txt и на экран.

Текст программы

Program pp;
Uses CRT;
Const n=10;
Type vec=array[1..n] of real;
Var
a,b,c               :vec;
y,sa,sb,sc       :real;
ka,kb,kc         :byte;
i                      :integer;
f1,f2                :text;
Procedure Vv(s:char; num:byte;Var z:vec);
Begin
Writeln('Mассив ',s);
For i:=1 to num do
Begin
Read(f1,z[i]); Write(z[i]:4:1,' ':3);
End;
Readln(f1); Writeln;
End;
Procedure SK1(z:vec;num:byte; Var s:real; Var k:byte);
Begin
s:=0; k:=0;
for i:=1 to num do if z[i]>0 then
Begin
s:=s+z[i];   k:=k+1
End;
End;
Function MAX(z:vec;num:byte):real;
Var m    :real;
Begin
m:=z[1];
for i:=1 to num do if z[i]>m then m:=z[i];
MAX:=m
End;
Begin
clrscr;
Assign(f1,'inp.txt');     Reset(f1);
Assign(f2,'out.txt');     Rewrite(f2);
Vv('a',8,a);  Vv('b',9,b); Vv('c',n,c);
SK1(a,8,sa,ka);     SK1(b,9,sb,kb);   SK1(c,n,sc,kc);
y:=(MAX(a,8)+MAX(b,9)+MAX(c,n))+(sa+sb+sc+ka+kb+kc);
Writeln('Результат:':20);
Write ('Массив  :  ');
Writeln('sa=',sa:5:1,'  ka=',ka);
Write ('Массив b:  ');
Writeln('sb=',sb:5:1,'  kb=',kb);
Write ('Массив c:  ');
Writeln('sc=',sc:5:1,'  kc=',kc);
Writeln(' ':10,'y=',y:10);
Readln;
Writeln(f2,' ':10,'y=',y:10);
Close(f1);  Close(f2)
End.

 

Результаты работы программы:

Mассив a                                                                     
-2.1    3.1   -2.4    5.6    5.4   -6.7    3.5   -3.6                        
Mассив b                                                                     
2.3   -4.3    2.1    2.5   -3.7   -5.6    4.6    3.5   -7.5                 
Mассив c                                                                      
-2.1    4.3   -2.3    7.6    4.5   -8.9    5.7   -4.5    6.8   -5.8          
Результат:                                                         
Массив а  :  sa= 17.6  ka=4                                                     
Массив b:  sb= 15.0  kb=5                                                    
Массив c:  sc= 28.9  kc=5                                                    
y= 9.330E+01

Просмотров: 34755

Вернуться в оглавление:Алгоритмические языки




Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.