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

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

Теоретически разделение служит целям упрощения и может продолжаться до бесконечности.

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

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

А началось все с подпрограмм.

Часто в программе какую-то последовательность команд надо повторять много раз. На ум приходит слово "цикл". Но если эту последовательность нам надо повторять в разных местах программы, циклы нам ничем не помогут.

Простой пример. Надо напечатать "++++++++++" (десять плюсиков). Это делается с помощью цикла:

for i:=1 to 10 do write ( ‘+’);

Но если в программе нужно печатать эти плюсики двадцать раз в разном месте? Можно написать этот цикл 20 раз.

Но есть другой вариант - написать цикл один раз и потом этот код 20 раз вызывать.

Мы имеем три выгоды от этого:

1) Не надо печатать 20 циклов (это простой пример, а еще бывают сложные);

2) Получаем более короткую программу, как на Паскале, так и в машинных кодах.

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

Существует два типа подпрограмм: процедуры и функции.

Единственное их отличие состоит в том, что функция возвращает результат (который называется результатом функции) и может использоваться в выражениях. Для того чтобы не путать функции со стандартными функциями, типа Sin(), Abs()и Trunk () (ближайшее целое, не превышающее аргумент по модулю), их иногда называют функциями пользователя.

Каждая подпрограмма имеет свое имя. На имя подпрограммы накладываются такие же ограничения, как и на имена переменных (длина до 40 символов, никаких русских букв и т.п). Самое важное ограничение это уникальность имени, т.е. имя подпрограммы не должно совпадать с именем другой подпрограммы, переменной или константы.

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

 

var x,y,m,n: integer; procedure MaxNumber(a,b: integer; var max: integer);begin if a>b then max:=a else max:=b;end; begin write('Введите x,y '); readln(x,y); MaxNumber(x,y,m); MaxNumber(2,x+y,n); writeln('m=',m,'n=',n);end.

Аналогичную задачу, но уже с использованием функций, можно решить так:

var x,y,m,n: integer; function MaxNumber(a,b: integer): integer; var max: integer;begin if a>b then max:=a else max:=b; MaxNumber := max;end; begin write('Введите x,y '); readln(x,y); m := MaxNumber(x,y); n := MaxNumber(2,x+y); writeln('m=',m,'n=',n);end.

 

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

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

· соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу.

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

Итог:

Алгоритм — это точно определенное описание способа решения задачи в виде конечной (по времени) последовательности действий. С составления алгоритма начинается решения поставленной задачи на компьютере. Каждая программа – есть своего рода последовательность команд, воплощающая в жизнь составленный алгоритм решения задачи.

ЭВМ понимает только машинный язык, язык логических единиц и нулей.

Для создания программы нужен инструмент – редактор, компилятор, отладчик программы, программа установки и программа для создания файлов справки.

Транслятор – программа, переводящая исходный текст программы на языке программирования в инструкции в машинном коде.

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

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

Реальные данные, с которыми работает программа, — это числа, строки и логические величины (аналоги 1 и 0, «да» и «нет», «истина» и «ложь»). Эти базовые типы данных.

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

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

 

Вопросы и задания:

1. Что такое язык программирования?

2. В чем различие компиляторов и интерпретаторов?

3. Объясните термины «язык низкого уровня» и «язык высокого уровня».

4. Какие языки программирования активно используются сегодня?

5. Что такое массив? Придумайте задачу на применение массива.

6. В чем основное преимущество использования подпрограмм?