">
Информатика Программирование
Информация о работе

Тема: Понятие и виды программ

Описание: Структура текста подпрограммы. Технология разработки подпрограмм, области применения. Список формальных параметров. Подпрограмма (процедуры и функции) в языке Паскаль. Выделение набора действий. Технология программирования. Функционально независимая часть.
Предмет: Информатика.
Дисциплина: Программирование.
Тип: Курсовая работа
Дата: 22.08.2012 г.
Язык: Русский
Скачиваний: 38
Поднять уникальность

Похожие работы:

МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА РОССИЙСКОЙ ФЕДЕРАЦИИ

ФГОУ.ВПО «ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ АГРАРНЫЙ УНИВЕРСИТЕТ ИМЕНИ К.Д.ГЛИНКИ»

КАФЕДРА ИНФОРМАЦИОННОГО ОБЕСПЕЧЕНИЯ АГРОЭКОНОМИЧЕСКИХ СИСТЕМ

Курсовая работа

Выполнил: студент

Проверил:

.

Воронеж

2012

Содержание

ВВЕДЕНИЕ3

1.ПОДПРОГРАММЫ5

1.1 ПОНЯТИЕ И ВИДЫ ПОДПРОГРАММ5

1.2.ПРОЦЕДУРЫ И ИХ ОПИСАНИЕ11

1.3.ФУНКЦИИ19

2.РАЗРАБОТКА ПРОГРАММЫ В СРЕДЕ ПРОГРАММИРОВАНИЯ В DELPHI ПОКАЗЫВАЮЩУЮ ПРОПУСКИ УЧЕНИКОВ24

2.1 ПОСТАНОВКА24

2.2 БЛОК-СХЕМА24

2.3 ПРОГРАММНЫЙ КОД25

2.4 РЕЗУЛЬТАТЫ27

ВЫВОДЫ И ПРЕДЛОЖЕНИЯ31

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ33

ВВЕДЕНИЕ

Программа объемом до 10000 операторов считается малой, до 100000 операторов – средней. Понятно, что строить такие программы непосредственно из элементарных операции практически невозможно. Для упрощения разработки программ в Паскале можно использовать подпрограммы - процедуры и функции. Они представляют собой инструмент, с помощью которого любая программа может быть разбита на ряд в известной степени независимых друг от друга частей. Такое разбиение необходимо по двум причинам.

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

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

Паскаль даже в сравнении с промышленными системами программирования обладает очень мощными средствами работы с подпрограммами.

Тема является актуальной, так как использование подпрограмм в Паскале значительно упрощает работу для пользователя, потому что процедуры и функции представляют собой относительно самостоятельные фрагменты программы, оформленные особым образом и снабженные именем. Упоминание этого имени в тексте программы вызывает процедуру (функцию).

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

В связи с поставленной целью курсовой работы выделяются следующие задачи:

Понятие и виды подпрограмм

Процедуры. Их описание

Функции

Основной метод исследования применяемыми в написании данной курсового проекта, является:

Метод индукции и дедукции

Метод анализа и синтеза

Метод восхождения от простого к сложному

Метод научной абстракции

Метод качественного и количественного анализа

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

1.ПОДПРОГРАММЫ

1.1 ПОНЯТИЕ И ВИДЫ ПОДПРОГРАММ

Подпрограмма (англ. subprogram) — поименованная или иным образом идентифицированная часть компьютерной программы, содержащая описание определённого набора действий. Подпрограмма может быть многократно вызвана из разных частей программы. В языках программирования для оформления и использования подпрограмм существуют специальные синтаксические средства.

Подпрограммы изначально появились как средство оптимизации программ по объёму занимаемой памяти — они позволили не повторять в программе идентичные блоки кода, а описывать их однократно и вызывать по мере необходимости. К настоящему времени данная функция подпрограмм стала вспомогательной, главное их назначение — структуризация программы с целью удобства её понимания и сопровождения.[1]

Назначение подпрограмм

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

Даже в тех случаях, когда в подпрограмму выделяется однократно производимый набор действий, это оправдано, так как позволяет сократить размеры целостных блоков кода, составляющих программу, то есть сделать программу более понятной и обозримой.[2]

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

В языке Паскаль существуют два вида подпрограмм:

процедуры

функции.

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

При разработке подпрограмм учитывают, что вспомогательный алгоритм – это отдельно существующий алгоритм, который имеет строго определенные:

назначение;

имя;

перечень входных и выходных данных, называемый списком формальных параметров (все общение вспомогательного алгоритма с окружающей средой осуществляется через эти параметры).[2]

Структура текста подпрограммы

Текст подпрограммы состоит из разделов. Первый раздел – это заголовок подпрограммы. Остальные разделы представляют собой блок. Понятие блока определено в структуре текста программы и включает в себя 6 разделов:

раздел меток;

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

раздел нестандартных типов;

раздел переменных;

раздел текстов подпрограмм;

раздел операторов.

Таким образом, структура текста подпрограммы в основном совпадает с текстом программы. За исключением того, что

в подпрограмме отсутствует раздел используемых модулей,

подпрограмма заканчивается точкой с запятой, а не точкой и

вид заголовка подпрограммы отличается от заголовка программы.[1]

Заголовок подпрограммы

Заголовок зависит от вида подпрограммы. Он несет в себе следующую информацию:

вид подпрограммы (процедура или функция);

имя подпрограммы;

список формальных параметров;

тип результата (только для функций).[4]

Технология разработки подпрограмм

Постановка задачи и выбор математической модели.

Разрабатывается спецификация на подпрограмму.

Спецификация – это документ, включающий в себя следующие пункты:

назначение подпрограммы;

имя подпрограммы;

вид подпрограммы;

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

заголовок подпрограммы.

Выбор или разработка метода решения.

Разработка информационной модели.

Информационная модель содержит только промежуточные данные, называемые локальными переменными, т.к. входные и выходные переменные определены в списке формальных параметров. Локальные переменные описываются в разделе переменных VAR подпрограммы и действуют только в пределах этой подпрограммы.

Разработка алгоритмической модели.

Разработка программной модели.

Отладка подпрограммы.[4]

Области применения подпрограмм

Исторически сложились первые две области применения подпрограмм:

В одной задаче необходимо неоднократно (хотя бы два раза) выполнять одинаковые действия над разными по величине данными. В этом случае обычно пишется подпрограмма, включаемая в седьмой раздел текста собственной программы.

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

Следующие две области применения определяются двумя технологиями программирования:

Технология программирования “сверху - вниз”.

Эта технология используется при разработке больших программных задач большим коллективом программистов. В технологии “сверху-вниз” задача разбивается на подзадачи. Для каждой подзадачи разрабатывается спецификация. В свою очередь каждая подзадача разбивается на более мелкие. И так далее. В итоге отдельный программист получает для разработки элементарную подзадачу, для которой определена спецификация. Он реализует ее в виде подпрограммы. Затем из готовых подпрограмм собирается большая задача.

Технология программирования «снизу – вверх»

Эта технология используется двумя диаметрально противоположными категориями программистов:

суперпрограммистами, экономящими свое время;

людьми, практическими не умеющими программировать.

При этой технологии из готовых собственных или чужих подпрограмм собирается готовая задача.

Эта область непосредственно связана с процедурно-ориентированным подходом к программированию. Этот подход ассоциируется с технологией «сверху – вниз». Здесь задача также разбивается на подзадачи. Каждая из подзадач реализуется в виде подпрограмм, из которых затем собирается вся задача.

Применение подпрограмм в объектно-ориентированном программировании. Здесь информационный объект представляет собой неразрывную совокупность данных и действий над этими данными, называемыми методами. Методы оформляются в виде подпрограмм.[1]

Список формальных параметров (СФОП)

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

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

Для каждого входного и выходного данного в СФОП задается:

произвольное имя;

тип данных;

вид параметра.

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

Вид параметра определяется статусом и типом параметра:

параметры-значения – это всегда входные данные (обычно только простых, ссылочных или строковых типов);

параметры-переменные – это всегда выходные данные;

параметры-константы – это входные параметры сложных типов, кроме строковых и ссылочных (параметры-константы определены только в Турбо Паскале).[5]

1.2.ПРОЦЕДУРЫ И ИХ ОПИСАНИЕ

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

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

Вторая причина заключается в применении современных методов нисходящего проектирования программ. В результате применение этих методов алгоритм представляется в виде последовательности относительно крупных подпрограмм, реализующих более или менее самостоятельные смысловые части алгоритма. Подпрограммы в свою очередь могут разбиваться на менее крупные подпрограммы, те - на подпрограммы нижнего уровня и т.д. Последовательное структурирование программы продолжается до тех пор, пока реализуемые подпрограммами алгоритмы не станут настолько простыми, чтобы их можно было легко запрограммировать.[4]

Паскаль даже в сравнении с промышленными системами программирования обладает очень мощными средствами работы с подпрограммами.

Процедуры и функции, как уже отмечалось, представляют собой относительно самостоятельные фрагменты программы, оформленные особым образом и снабженные именем. Упоминание этого имени в тексте программы называется вызовом процедуры (функции). Отличие функции от процедуры заключается в том, что результатом исполнения операторов, образующих тело функции, всегда является некоторое единственное значение простого, строкового типа или указателя, поэтому обращение к функции можно использовать в соответствующих выражениях наряду с переменными и константами.

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

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

Описание процедуры состоит из:

заголовка процедуры

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

Заголовок включает служебное слово Procedure, имя процедуры и заключенные в круглые скобки список формальных параметров, с указанием их типов (именно типов, а не описаний). Пример процедуры:

Procedure <имя процедуры> (список формальных параметров);

Var (может отсутствовать);

Begin

Тело поцедуры;

End;

Вызов осуществляется по имени данной процедуры в теле программы. Имя процедуры воспринимается как оператор. При его выполнении выполняется вся подпрограмма.[8]

Формальные и фактические параметры

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

Список формальных параметров необязателен и может отсутствовать.

Если же он есть, то в нем должны быть перечислены имена формальных параметров и их тип, например:

Procedure A (a : real; b : integer: с : char)

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

Procedure A (а : integer; b : integer);

можно написать проще:

Procedure A (a, b : integer);

Операторы тела подпрограммы рассматривают список формальных параметров как своеобразное расширение раздела описаний: все переменные из этого списка могут использоваться в любых выражениях внутри подпрограммы. Таким способом осуществляется настройка алгоритма подпрограммы на конкретную задачу.

Первый формальный параметр заменяется первым фактическим, второй-вторым и т. д.[8]

Механизм замены формальных параметров на фактические позволяет нужным образом настроить алгоритм, реализованный в подпрограмме. Паскаль следит за тем, чтобы количество и тип формальны параметров строго соответствовали количеству и типам фактических параметров в момент обращения к подпрограмме. Смысл используемых фактических параметров зависит от того, в каком порядке они перечислены при вызове подпрограммы. Пользователь должен сам следить за правильным порядком перечисления фактических параметров при обращении к подпрограмме. Приведем пример. рассмотрим интересующую нас часть программы (не самой удачной, но это пока неважно) для вычисления x = (5! + 2!)/(5+2)!

Program factorial;

{Тело программы}

Procedure A(y:integer, var z: integer); (объявление процедуры, её имя , список формальных параметров)

Begin

z:=1;

While y>1 do

Begin

z:=zxy;{тело процедуры, которая также предусматривает, что 0! и 1! =1}

y:=l-1;

end;

end;

begin

(вызов процедуры)

A(5,a);

A(2,b);

A(2+5,c);

end.

В данном случае y, z формальные параметры. Фактические параметры: 5, а, 2, b, 2+5, c. В «основном» разделе VAR должны быть описаны а, b, c

При первом вызове процедуры фактический параметр 5 заменит формальный y, фактический a заменит формальный z, во втором 2 заменит y, b заменит z.

В третьем соответственно 2+5 заменит y, c заменит z. Для того, чтобы окончательно разобраться в программе, необходимо пояснить, какими бывают виды формальных и фактических параметров, их назначение.[10]

Виды параметров.

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

Любой из формальных параметров подпрограммы может быть либо параметром-значением, либо параметром-переменной, либо параметром-константой. Рассмотрим все виды переменных:

Если параметры определяются как параметры-переменные, перед ними необходимо ставить зарезервированное слово VAR, например:

Procedure A (var a : real);

Здесь параметр a - параметр-переменная. Заголовок процедуры может быть устроен так, что некоторые группы формальных параметров не содержат слова VAR. Например:

Procedure B (a,b,c:real; var s:real);

Формальные параметры, которые входят в группы, не содержащие слова VAR, называются формальными параметрами-значениями.[4]

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

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

Если параметр определен как параметр-значение, то перед вызовом подпрограммы это значение вычисляется, полученный результат копируется во временную память и передается подпрограмме. Важно учесть, что даже если в качестве фактического параметра указано простейшее выражение в виде переменной или константы, все равно подпрограмме будет передана лишь копия переменной (константы).[3]

Таким образом, назначение параметра-значения – передача данных из программы в подпрограмму. Если же параметр определен как параметр-переменная, то при вызове подпрограммы передается сама переменная, а не ее копия. Любые возможные изменения в подпрограмме параметра-значения никак не воспринимаются вызывающей программой, так как в этом случае изменяется копия фактического параметра, в то время как изменение параметра-переменной приводит к изменению самого фактического параметра в вызывающей программе.

Параметр-константа схож с параметром-переменной: в подпрограмму передается сама константа, но изменение её невозможно. Назначение такого параметра совпадает с назначением параметра-значения . Формальные параметры-константы указываются в заголовке программы после служебного слова const. Его действие распространяется до ближайшей точки с запятой.

Program Primer;

var

a, b: integer;

{Тело программы}

Procedure А (a: integer; var b: integer);

begin

a:=sqr(a);

b:=sqr(b);

writeln(‘в квадрате они выглядят так: ’,a,’, ’,b);

end;

….

begin

a:=4; b:=6;

writeln(‘внимательно посмотрите на эти числа: ’, a,’, ’, b);

А(a,b);

writeln(‘а так не в квадрате: ’,a, ’, ’,b);

end.

Результаты выглядят так:

внимательно посмотрите на эти числа: 4, 6

в квадрате они выглядят так: 16, 36

а так квадрате: 4, 6

«закрыла» локальная переменная а, объявленная как параметр-значение.

Итак, параметры-переменные используются как средство связи алгоритма, реализованного в подпрограмме, с «внешним миром»: с помощью этих параметров подпрограмма может передавать результаты своей работы вызывающей программе. Разумеется, в распоряжении программиста всегда есть и другой способ передачи результатов - через глобальные переменные. Однако злоупотребление глобальными связями делает программу , как правило, запутанной, трудной в понимании и сложной в отладке. В соответствии с требованиями хорошего стиля программирования рекомендуется там, где это возможно, использовать передачу результатов через фактические параметры-переменные.[8]

Описание всех формальных параметров как параметров-переменных нежелательно по двум причинам. Во-первых, это исключает возможность вызова подпрограммы с фактическими параметрами в виде выражений, что делает программу менее компактной. Во-вторых, и главных, в подпрограмме возможно случайное использование формального параметра, например, для временного хранения промежуточного результата, т.е. всегда существует опасность непреднамеренно «испортить» фактическую переменную. Вот почему параметры-переменные следует объявлять только те, через которые подпрограмма в действительности передает результаты вызывающей программе. Чем меньше параметров объявлено параметрами-переменными и чем меньше в подпрограмме используется глобальных переменных, тем меньше опасность получения непредусмотренных программистом побочных эффектов, связанных с вызовом подпрограммы, тем проще программа в понимании и отладке.

Существует одно обстоятельство, которое следует учитывать при выборе вида формальных параметров. Как уже говорилось, при объявлении параметра-значения осуществляется копирование фактического параметра во временную память. Если этим параметром будет массив большой размерности, то существенные затраты времени и памяти на копирование при многократных обращениях к подпрограмме могут стать peшающим доводом в пользу объявления такого параметра параметром-переменной или передачи его в качестве глобальной переменной.[5]

1.3.ФУНКЦИИ

Функция - это инструкция (множество команд), имеющая имя и результат, который может быть присвоен переменной или может входить в выражение. Выполнение функции происходит при появлении в тексте программы ее имени.

Паскаль поддерживает следующие разновидности функций:

встроенные функции;

функции, создаваемые программистом;

библиотечные функции.

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

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

Переменная: = функция (параметры), где

переменная - имя переменной, которой надо присвоить значение, вычисленное функцией;

функция - имя функции, значение которой надо присвоить переменной;

параметр - выражение, значение которого используется для вычисления значения функции.[4]

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

Паскаль позволяет программисту определить свою собственную функцию и в дальнейшем использовать ее так же, как и встроенные функции. Например, можно определить функцию вычисления факториала, назвав ее Factor. Затем в том месте программы, где нужно вычислить факториал, вместо последовательности команд, делающих это, написать y := factor(x).

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

Function имя функции (параметр1:тип1, параметр2:тип2,параметр а:тип а): тип

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

begin (раздел команд функции)

имя := выражение;

end;

Function - зарезервированное слово языка Паскаль, обозначающее, что далее следуют команды функции;

имя - имя функции, используемое для вызова последовательности команд между begin и end.

Параметр - это обобщенное имя значения, используемого для вычисления значения функции. В последовательности команд функции параметр используется как обычная переменная. Конкретное значение параметр получает при вызове функции из основной программы. Завершается последовательность команд операцией присвоения функции значения выражения, тип которого должен совпадать с типом функции.

Пример функции вычисления факториала:

Function factor(n:integer): integer;

var

i, f: integer;

begin

f:=1;

for i:=2 to n do f:=fхi;

factor:=f;

end;

У функции, рассмотренной в примере, один параметр - число типа Integer, которое надо вычислить (конкретное значение n получает при вызове функции). Возвращает функция вычисленное значение - число типа Integer.[8]

Если необходимо использовать в программе свою функцию, то описание этой функции должно быть помещено в текст программы после раздела описания переменных VAR. Команды функции будут выполнены, если в тексте программы встретится имя этой функции. Переход от команд основной программы к командам функции называется вызовом функции, или обращением к функции. Если в описании функции указаны параметры, то в команде вызова тоже должны быть указаны параметры. Причем количество и типы параметров, задаваемых при вызове функции, должны соответствовать количеству и типам параметров в описании функции. Параметры, задаваемые при обращении к функции, называются фактическими. В качестве фактических параметров обычно используют константы или переменные, реже выражения.

Локальные и глобальные переменные

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

Переменные, описанные в процедуре или функции программиста, доступны только командам этой процедуры или функции и называются локальными.[4]

Например:

Program prog;

var

x:integer; (глобальная переменная)

procedure А;

var

y:integer; (локальная переменная)

begin

{можно использовать x и y}

end;

Begin

{можно использовать только x}

end.

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

Например:

Program prog;

var

i:integer;

procedure А;

var

i:integer;

begin

i:=100;

end;

begin

i:=1;

А;

writeln(i);

end.

В результате получим, что i будет равно 1.

Процедура может изменить значение глобальной переменной, если внутри процедуры не описана переменная с таким же именем.[10]

Кроме локальных переменных, в подпрограммах могут быть и локальные подпрограммы. Это подпрограммы, текст которых размещен внутри текста подпрограммы более высокого уровня. Использование таких подпрограмм, как и локальных переменных, ограничивается подпрограммой, к которой они принадлежат.

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

2.РАЗРАБОТКА ПРОГРАММЫ В СРЕДЕ ПРОГРАММИРОВАНИЯ В DELPHI ПОКАЗЫВАЮЩУЮ ПРОПУСКИ УЧЕНИКОВ

2.1 ПОСТАНОВКА

Задача: Разработать программу, позволяющую отображать, свободную информацию:

О пропусках отдельного ученика, по предметам с указание даты и причины.

Всего класса по конкретному предмету.

2.2 БЛОК-СХЕМА

2.3 ПРОГРАММНЫЙ КОД

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, DBGrids, DB, ADODB, ComCtrls, Mask, DBCtrls, StdCtrls;

type

TForm1 = class(TForm)

PageControl1: TPageControl;

TabSheet1: TTabSheet;

TabSheet2: TTabSheet;

DataSource1: TDataSource;

ADOConnection1: TADOConnection;

ADODataSet1: TADODataSet;

DBGrid1: TDBGrid;

Button1: TButton;

Edit1: TEdit;

ComboBox1: TComboBox;

Button2: TButton;

DBGrid2: TDBGrid;

DataSource2: TDataSource;

ADODataSet2: TADODataSet;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure ComboBox1Change(Sender: TObject);

end;

var

Form1: TForm1;

predmet:String;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

ADODataSet1.Close;

ADODataSet1.CommandText:=select * from Пропуски Where Фамилия like "+Edit1.text+%" order by[Фамилия];

ADODataSet1.Open;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

ADODataSet2.Close;

ADODataSet2.CommandText:=select * from Пропуски Where +predmet+ like "н" order by [Фамилия];

ADODataSet2.Open;

end;

procedure TForm1.ComboBox1Change(Sender: TObject);

begin

case Combobox1.ItemIndex of

0:predmet:=Физика;

1:predmet:=Экономика;

2:predmet:=Информатика;

end;

end;

end.

2.4 РЕЗУЛЬТАТЫ

Результаты пропусков отдельного ученика





Результаты пропусков всего класса по отдельному предмету





ВЫВОДЫ И ПРЕДЛОЖЕНИЯ

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

Подпрограммы решают три важные задачи:

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

улучшают структуру программы, облегчая ее понимание;

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

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

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

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

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

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

Для повторного использования частей лучше сразу выделять в программе полезные алгоритмы в отдельные подпрограммы.

Подпрограммы могут быть стандартными, т.е. определенными системой, и собственными, т.е. определенными программистом.

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

Из набора стандартных процедур и функций по обработке одного типа информации составляются модули.

Структура текста подпрограммы соответствует структуре текста основной программы за двумя исключениями:

подпрограмма начинается с заголовка, содержащего имя подпрограммы, передаваемые в нее и возвращаемые от нее параметры, т.е.  запись заголовка подпрограммы отличается от заголовка программы;

подпрограмма кончается не точкой, а точкой с запятой.

В данной работе мы определили различие между процедурой и функцией Основное различие состоит в том, что процедура только выполняет какую-либо законченную последовательность действий, не возвращая результата работы в основную программу, а функция и выполняет действия, и возвращает результат.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

В.Ю. Микрюкова. Алгоритмизация и прогаммирование. Учебное пособие для студентов среднего профессионального образования. Ростов – на – Дону. «Феникс», 2007 – 304 с

С.М. Окулов. Основы программирования. М. Бином. Лаборатория знаний, 2006 – 440с

А.М. Епанешников, В.А. Епашников. Программирование в среде Паскаль. «Диско – Мифи», 1998 – 367с

С. Немнюгин, Л. Перколаб. Изучаем Паскаль. СПб: Питер, 2008 – 320с

С. А. Абрамов. Начала программирования на языке паскаль

А. Масюков. Краткий конспект лекций по информатике.

А.В. Жуков «Изучаем Делфи№. СПб. Питер, 2000 – 385с

http//www.biblioteka.net.ru/data/paskal/pas1/

http//.book.kulichiki.net./data/delphi/del 2/

http//schools.keldysh.ru/sch887/paskal.html