
- •Языки и системы программирования Алгоритмы
- •Языки программирования
- •Область применения языков программирования
- •Сложность и эффективность языков программирования
- •Трансляторы
- •Характеристика с/п Pascal abc
- •Используемые в с/п Pascal abc «горячие клавиши»
- •Структура программы на Паскале
- •Сообщения об ошибках. Отладка программы.
- •Система подсказок.
- •Команды вывода данных на экран
- •Константы
- •Переменные
- •Арифметические выражения. Приоритет арифметических операций
- •Стандартные арифметические функции
- •Процедуры инкремента и декремента
- •Примеры решения линейных задач
- •Ввод данных с клавиатуры
- •Примеры решения диалоговых задач
- •Линейные задачи для самостоятельной работы
- •Лаб. 1. Линеаризовать выражение:
- •Лаб. 2. Линейные диалоговые задачи (на одно действие)
- •Лаб. 3. Диалоговые задачи на несколько действий
- •Ветвление
- •Логические выражения
- •Вложенное ветвление
- •Лаб. 4. Задачи на ветвление:
- •Лаб. 5. Задачи на ветвление с вычислениями:
- •Выбор варианта
- •Лаб. 6. Задачи на выбор варианта:
- •Как выбрать цикл?
- •Экстренные события в теле цикла
- •Лаб. 7. Числовые задачи с циклом For
- •Лаб. 8. Сюжетные задачи с циклом For
- •Лаб. 9. Задачи с условными циклами
- •Библиотека crt
- •Библиотека sounds
- •Лаб. 10. Задачи с использованием циклов и библиотек crt и sounds
- •Порядковые типы данных
- •Перечислимый тип данных
- •Символьный тип данных
- •Ограниченный (интервальный) тип данных
- •Лаб. 11. Задачи со строками
- •Массивы
- •Решение задач с массивами
- •Поиск минимального (максимального) элемента массива
- •Сортировка массива.
- •Двумерные и многомерные массивы
- •Лаб. 12. Задачи с одномерными массивами
- •Лаб. 13. Задачи с двумерными массивами
- •Множества
- •Файлы данных
- •Записи и базы данных
- •Библиотека GraphAbc
- •Действия с графическим окном:
- •Точечная графика
- •Графические примитивы
- •Текст в графическом окне
- •Использование готовых точечных рисунков
- •Вспомогательные алгоритмы
- •Рекурсия
- •Событийное программирование
- •Использование таймеров
- •Использование сторонней библиотеки ukeyb
Вспомогательные алгоритмы
Если в нескольких местах программы встречаются участки с одинаковыми действиями, то можно вынести такой участок из раздела команд в раздел описаний и дать ему имя, а в тех местах, где он встречался в программе, оставить только вызов по имени. Такой, вынесенный отдельно, участок программы, имеющий имя, называется вспомогательным алгоритмом или подпрограммой. Подпрограмму можно вызывать не только из основной программы, но и из других подпрограмм, описанных ниже данной подпрограммы. Выносить в подпрограмму нужно не просто любую последовательность команд, а такой участок программы, который выполняет осмысленное действие. Название подпрограммы должно информировать об этом действии. Правила составления имён подпрограмм – такие же, как и для имён переменных.
Различают два вида подпрограмм: процедуры и функции. Процедура – это синоним слова «команда». Она вызывается по имени Имя функции нужно использовать в выражении, как переменную. Паскаль вместо имени функции подставляет результат её вычислений. Например: x:=2*gipotenuza(10,18)+y;
Чтобы уточнить, каким образом должна работать подпрограмма, нужно при вызове передать ей информацию. Для этого после имени подпрограммы в скобках перечисляют конкретные значения, которые нужно передать – фактические параметры. Например, если мы разработали процедуру, которая рисует домик, мы при вызове должны указать в качестве параметра базовые координаты и размеры домика: domik(100,400,150,180);
В предыдущем примере мы передавали через параметры катеты треугольника, а функция вычисляла по ним гипотенузу. Вместо чисел в качестве фактических параметров можно поместить переменные или выражения: domik(x,y,a,1.5*a); . Необходимо, чтобы к моменту вызова эти переменные уже были вычислены.
В описании подпрограммы в скобках после имени нужно описать переменные, в которые будут помещены данные, передаваемые при вызове, – формальные параметры.
Кроме параметров, в подпрограммах могут использоваться и другие переменные. Они создаются в момент вызова подпрограммы и уничтожаются при выходе из неё, поэтому в основной программе и в других подпрограммах они неизвестны (так же, как и параметры). Такие переменные называются локальными (местными). Их описание находится после заголовка подпрограммы. Те же переменные, которые объявлены в разделе var самой программы, называются глобальными. Они могут быть использованы как в любой подпрограмме, описанной ниже этого объявления, так и в основной программе. Если в подпрограмме имеется локальная переменная, чьё имя совпадает с именем глобальной переменной, то на время работы подпрограммы глобальная переменная будет забыта, и подпрограмма работает со своей локальной переменной.
Р
.
. .
procedure
flower(xc,yc,r: integer);
var
n,x,y:integer;
alf:real;
begin
setbrushcolor(clyellow);
circle(xc,yc,r
div 2);
setbrushcolor(claqua);
for
n:=1 to
6 do
begin
alf:=2*pi/6*n;
x:=round(xc+3*r/4*sin(alf));
y:=round(yc-3*r/4*cos(alf));
circle(x,y,r
div 4);
end;
end;
.
. .
Процедура рисует цветок по заданным координатам и радиусу.
Функция получает два катета и вычисляет гипотенузу прямоугольного треугольника
.
. .
function
gipotenuza(a,b: real): real;
var
c:
real;
begin
c:=sqrt(sqr(a)+sqr(b));
gipotenuza:=c;
end;
.
. .
Обратите внимание на слово real, стоящее в конце заголовка функции. Таким способом указывается тип результата, возвращаемого функцией.
Кроме того, обратите внимание на имя функции gipotenuza, которому присваивается результат расчётов. Именно так указывают, какая именно величина возвращается в качестве результата работы функции.
Кстати, использование переменной c в данном примере излишне. Можно было сразу использовать имя функции:
gipotenuza:=sqrt(sqr(a)+sqr(b));
Если необходимо завершить процедуру, не дойдя до её конца, используется команда exit.