Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Процедуры и функции
1. Зачем нужны поцедуры?...................................................................................................... 1
2. Как создать.............................................................................................................................. 1
3. Как вызвать.............................................................................................................................. 1
4. Порядок выполнения операторов в программах с процедурами.................................... 1
5. Локализация данных в процедурах...................................................................................... 1
6. Передача данных в процедуру............................................................................................ 2
6.1 Уместная аналогия........................................................................................................... 2
6.2 Списки параметров............................................................................................................ 3
6.3 Присвоение значений при вызове.................................................................................. 3
6.4 Согласование списков ПАРАМЕТРОВ........................................................................ 4
7. Получение результатов из процедуры.................................................................................. 4
1. Зачем нужны поцедуры?
Во-первых - для уменьшения размера программы
( один раз написанный текст процедуры, можно
исполнить многократно )
во-вторых - для упрощения разработки больших программ
путем разбиения их на отдельные
самостоятельные части-процедуры, небольшого
размера
2. Как создать
SUB имя( формальные параметры ) //... Начало процедуры
.......
.......
END SUB // ....Конец процедуры
Пример: SUB soobschenie( txt$ )
locate 6,6
print Txt$
sleep
END SUB
3. Как вызвать
CALL имя_процедуры( параметр1 , параметр2 , ...)
--------------------------------------------------
¦ Пример: CALL soobschenie(" Включите Принтер ") ¦
---------------------------------------------------
4. Порядок выполнения операторов в программах с процедурами
После вызова процедуры оператором CALL управление передается в саму процедуру. После завершения процедуры управление передается в вызывающую программу на следующую строку за командой вызова( call )
5. Локализация данных в процедурах
Локализация - это сокрытие данных.(Ограничение доступа к данным)
Данные одной процедуры НЕДОСТУПНЫ для других процедур. Процедура - это полностью НЕЗАВИСИМЫЙ, САМОСТОЯТЕЛЬНЫй блок, внутренне содержимое которого "не видно" из других процедур
Переменные объявленные внутри процедуры являются локальными. Локальные означает - внутрипрограммные!
Уместна аналогия.
Программа, разбитая на процедуры, похожа на помещение, состоящее из нескольких комнат. Из одной комнаты не видно, что делается в других комнатах. Стены комнат скрывают, внутреннюю жизнь комнаты. | Аналогично процедура скрывает от других частей программы свою начинку |
В каждой комнате имеются шкафчики, полочки, ящички и т. п. Находясь в комнате N 2 нельзя заглянуть в ящики, стоящие в комнате N 1. | Переменные в процедурах очень похожи на ящики с информацией. Так вот из одной процедуры невозможно добраться до ящиков-переменных другой процедуры |
Ящики в разных комнатах могут называться одинаково(например на них написано “посуда”) Но это разные ящики и в них разная посуда | Переменные в разных процедурах могут называться одинаково. Но это разные переменные и в них хранится разная информация |
Каждая процедура занимает отдельную область ОЗУ. И в этих областях под переменные каждая процедура отводит отдельную память
![]() |
![]() |
.
6. Передача данных в процедуру
Но процедуры обмениватся информацией друг с другом. Для этого используются списки параметров
6.1 Уместная аналогия
Представьте себе что ваше помещение – это фабрика, а комнаты – это цеха с секретным призводством!!! Работники одного цеха не должны знать, что творится в другом цеху. Но продукция первого цеха должна поступать во 2-й на дальнейшую обработку, а из 2-го цеха в 3-й и т. д. Для обмена продукцией производства в стене между цехами проублено маленькое окошко, в которое вставлен общий ящик, в который можно класть продукцию и просовывать это ящик в другой цех, передавая туда свои изделия, а оттуда в этом же ящике получать их продукт труда. Общих ящиков (и прорубленных окошек) может быть не один, а несколько | Переменные в списках параметров процедур - это общие ящики, с помощью которых из одной процедуры в другую может передаваться информация и возвращаться результаты работы |
В одном цехе на ящике(со своей строны) может быть написано одно название. А со строны другого цеха - другое | Также и переменные в списках параметров, стоящие на одном порядковом месте могут называться по разному, но это одна и таже ячейка памяти(ящик). И в ней лежит значение, доступное в обеих процедурах |
6.2 Списки параметров
Передача данных из одной процедуры в другую осуществляется через списки параметров
ФАКТИЧЕСКИЕ параметры - это данные из списка при вызове SUB
¦
------> call soobschenie( " Включите Принтер " )
ФОРМАЛЬНЫЕ параметры - это переменные в заголовке п/п
¦
--------------> SUB soobschenie( text$ )
ФОРМАЛЬНЫМИ параметрами - могут быть только ПЕРЕМЕННЫЕ
ФАКТИЧЕСКИЕ - переменные, константы, выражения
6.3 Присвоение значений при вызове
При вызове процедуры значения ФАКТИЧЕСКИХ парметров присваиваются ФОРМАЛЬНЫМ в соответствии с их местом в списке.( значение 1-го фактического парметра присваивается 1-му формальному, 2-го факт.2-му формальн. и т. д. )
Например :
' .... Головная программа
CLS
....
call mySubprog( 3 , 4 , 5 , "Я" )
. . .
SUB mySubprog( x, y, z, c$ )
.......
print x;y;z;c$
END SUB
Значения формальных парамеров в процедуре mySubprog
x = 3 ; y = 4 ; z = 5 ; c$ = "Я"
Будет напечатано 3 4 5 Я
ФОРМАЛЬНЫМИ параметрами могут быть только ПЕРЕМЕННЫЕ
ФАКТИЧЕСКИМИ - что угодно( переменные, константы, выражения )
Пример 2
' Главная программа
CLS
a = 5
S = 0
CALL SUMMA( 4 , a, s )
SUB SUMMA( x as SINGLE, y as SINGLE, z as Single )
z = x + y
print x;y;z
end sub
На экран будет выведено : 4 , 5 , 9
6.4 Согласование списков ПАРАМЕТРОВ
Списки ФАКТИЧЕСКИХ И ФОРМАЛЬНЫХ парметров должны
быть согласованы как :
- по количеству парметров
- так и по типу данных
A. Количество параметров в ОБОИХ списках должно быть
ОДИНАКОВЫМ!!!
Б. Соответсвенные параметры обоих списков( стоящие по порядку на одном месте ) должны быть ОДНОГО ТИПА!!!
Например :
1) call one( 4, 5 ,7 )
. . .
sub One( x, y )
. . .
end sub
---------------------
*** Ошибка!!! количество параметров не совпадает
2) call two( 5 , "Привет" )
...
sub two( x, y )
...
end sub
--------------------
*** Ошибка!!! Несовпадение типа у 2-го параметра формальный прамаетр y - типа SINGLE Правильно было бы задать Y$
7. Получение результатов из процедуры
Результаты работы процедуры возвращаются в главную программу,
также через список параметров
----------------------------------------------
¦Например: ¦
¦ ¦
¦ Процедура arifm расчитывает сумму 2-х чисел¦
¦и возвращает ее значение через переменную sum¦
¦ ..... ¦
¦ CALL arifm( 12 , 10 , sum ) ¦
¦ print sum ' ...... Результат 22 ¦
¦ ¦
¦ SUB arifm( x , y, sum ) ¦
¦ sum = x + y ¦
¦ END SUB ¦
----------------------------------------------
Для получения результатов работы процедуры в список
ФАКТИЧЕСКИХ параметров надо включить ПЕРЕМЕННУЮ!!!
ПЕРЕДАЧА данных | ФАКТИЧЕСКИЕ параметры | ФОРМАЛЬНЫЕ параметры
----------------|---------------------------|---------------------
| что угодно( переменные, | только переменные
в ПРОЦЕДУРУ | константы, выражения ) |
| |
| CALL arifm(12 ,10 , ...) | SUB arifm(x, y,... )
----------------|---------------------------|---------------------
| |
из ПРОЦЕДУРЫ | только переменные | только переменные
| |
| CALL arifm(... ,... ,sum )|SUB arifm( , ,sum )
------------------------------------------------------------------
Основные порталы (построено редакторами)


