Олег Деревенец - Песни о Паскале
- Название:Песни о Паскале
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Олег Деревенец - Песни о Паскале краткое содержание
Песни о Паскале - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
procedure Local;
begin
Writeln(c1);
end;
begin {--- главная программа ---}
Local;
Writeln(c1);
Readln;
end.
Очевидно, программа дважды напечатает константу C1, – проверьте меня. Теперь добавим объявление локальной константы с тем же именем C1, поместив его между заголовком процедуры Local и её телом. К совпадающим именам я прибегнул не от бедности фантазии, – мой умысел скоро прояснится.
const c1 = ’Глобальная’;
procedure Local;
const c1 = ’Локальная’;
begin
Writeln(c1);
end;
begin {--- главная программа ---}
Local;
Writeln(c1);
Readln;
end.
Известно, что компилятор не допускает совпадающих имен, но здесь – иное дело. Локальная константа C1 «спряталась» внутри своей процедуры и, как говорят программисты, не видна за её пределами.
Запустив на выполнение этот вариант программы, вы убедитесь, что внутри процедуры будет напечатана локальная константа, а в главной программе – глобальная. Отсюда следуют два правила, имеющих силу для констант, переменных и других объектов, о которых вы со временем узнаете. Правила эти таковы:
• локальные объекты (константы, переменные и прочие) видны лишь внутри тех подпрограмм, в которых они объявлены;
• при совпадении имен локального и глобального объектов, внутри подпрограммы имеет силу локальный объект; при этом глобальный объект скрывается локальным.
С учетом сказанного нашу неработающую программу можно исправить так:
{ P_20_1 – вариант программы с локальной переменной }
var S: string; k: integer ; { глобальная переменная }
procedure Scan(arg : string);
var k: integer ; { локальная переменная }
begin
for k:=1 to Length(arg) do
if arg[k]=’A’ then arg[k]:=’B’;
end;
begin { главная программа }
for k:=1 to 3 do begin
Write(’Введите строку: ’); Readln(S);
Scan(S);
Writeln(S);
end;
end.
Теперь совпадение имен локальной и глобальной переменных k не нарушает работу программы, поскольку это разные переменные. Они могли бы иметь даже разные типы! Убедитесь, что отныне путаницы в циклах нет.
Локальные объекты – константы, переменные и прочие – отличное средство для разумного распределения данных в пространстве вашей программы.
Во-первых, они облегчают многотрудную жизнь программиста. Если некоторые объекты нужны только внутри процедуры, их следует объявить там же, то есть как локальные. И тогда не придется гадать, повлияют ли они на другие части программы.
Другой выигрыш заключается в экономии памяти. Все переменные занимают оперативную память («оперативку»). Чем больше переменных, тем больше памяти им подавай. Глобальные переменные занимают память в течение всего времени работы программы. А для локальных память выделяется лишь на время работы соответствующей процедуры или функции. Завершилась подпрограмма – освободилась память.
Теперь вновь проверим нашу программу. В ответ на запрос строки введите что-нибудь вроде «QAAAW». Если все нормально, программа напечатает «QBBBW» (буква «A» заменяется буквой «B»). Не вышло? Что ж, тогда идем «на поклон» к отладчику, – мы сделаем это в следующей главе.
• Программа упрощается, если вынести части алгоритма в отдельные подпрограммы — процедуры и функции.
• Объекты, используемые лишь внутри подпрограмм, следует объявлять там же, – как локальные.
• Локальные объекты (константы, переменные и прочие) видны, то есть доступны, лишь внутри тех подпрограмм, где они объявлены.
• Если имя локального объекта совпадает с глобальным, то внутри подпрограммы действует локальный объект, а глобальный делается «невидимкой».
• Локальные объекты упрощают программирование, придают программам надежность и экономят оперативную память.
А) В 17-й главе нами создан экзаменатор, проверяющий знания таблицы умножения. Переработайте программу P_17_1 так, чтобы оценка выставлялась в процедуре, принимающей один параметр – количество допущенных ошибок.
Б) Создайте процедуру, печатающую все числа, кроме единицы, на которые без остатка делится число N, где N – параметр процедуры. Напишите программу для проверки этой процедуры.
В) Два сотрудника подали своему начальнику заявления на отпуск. Первый попросил отпустить его с A1 по B1 день (дни отсчитываются с начала года), второй – с A2 по B2 день. Считаем, что A1
Г) Подойдя к перекрестку, пешеход решает, переходить ли ему улицу или остановиться. На решение влияет характер пешехода и ещё два фактора: сигнал светофора и близость опасно движущегося транспорта. Напишите программу с процедурой, которая принимает и печатает решение в зависимости от переданных в неё трех параметров, а именно.
• Параметр A = true, если горит зеленый;
• Параметр B = true, если поблизости опасно движется транспорт;
• Параметр C – это число, определяющее характер пешехода так:
1 – послушный и осторожный – учитывает и светофор и опасность;
2 – послушный, но беспечный – смотрит только на светофор;
3 – хитрый вольнодумец – идет только на красный, если это ничем не грозит;
4 – непримиримый вольнодумец – идет только на красный;
5 – экстремал – идет только на красный, и так, чтобы грозила опасность;
6 – «безбашенный» – идет, несмотря ни на что;
7 – запуганный – никогда не идет через дорогу, а ищет подземный переход.
Глава 21
Отладка

Предыдущую главу мы покинули, понурив голову, так и не совладав с программой P_20_1. Почему не заменяются символы в строке? – этот вопрос остался без ответа. Эх, знать бы, что творится внутри программы! Сейчас она для нас – загадочный «черный ящик», и мы видим лишь то, что входит и выходит из него. К счастью, в IDE есть средство для доступа внутрь этого «ящика», и мы воспользуемся им. Это средство называется отладчиком. Так же, как редактор текста и компилятор, отладчик встроен в интегрированную среду разработки.
Отладчик – это набор инструментов для исследования «потрохов» программы. Посредством отладчика можно следить за выполнением отдельных операторов, делая остановки в нужных местах или на каждой строке программы. Застопорив программу, вы сможете выяснить значения тех или иных переменных и даже изменить их. Одним словом, отладчик – это чудо-оружие!
Читать дальшеИнтервал:
Закладка: