Песни о Паскале
Шрифт:
Итоги
• Для вычислений в Паскале предусмотрены данные числового типа (INTEGER).
• К данным целого типа могут применяться четыре арифметических операции, а также операция нахождения остатка от деления.
• В результате сравнения численных данных получается булев результат, который может быть применен везде, где проверяется условие.
• Числовые данные вводятся оператором Readln и выводятся операторами Write и Writeln;
• Числовым переменным нельзя присваивать строковые значения и наоборот: строковым
А слабо?
А) Найдите ошибки в следующей программе и объясните их.
var N, M : integer;
S : string;
begin
N:= ’10’;
S:= N + 5;
M:= S – 1;
if S=N then;
end.
Проверьте свои догадки, призвав на помощь компилятор.
Б) Перепишите программу «P_14_1», не прибегая к процедуре Break. В чем, по-вашему, слабость этого второго варианта? Можно ли обойтись в программе «P_14_1» без булевой переменной R и строковой S? Напишите такой вариант программы. Или слабо?
В) Пусть программа запросит три числа: A, B и C, а затем напечатает большее из них. Подсказка: примените булевы выражения вкупе с операциями сравнения, которые в булевых выражениях надо заключать в скобки, например:
if (A>=B) and (A>=C) then...
Примечание. Скобки ставят по той причине, что булевы операции можно выполнять и с числами, и такие операции приоритетней операций сравнения. О применении логических операций к числам сказано в главе 48.
Г) В стене прорублено прямоугольное сквозное отверстие со сторонами A и B. Пусть ваши программы разберутся, пройдет ли в него кирпич с ребрами X, Y, Z. Сделайте две программы для таких случаев:
• Известно, что A<B и X<Y<Z.
• Соотношение между сторонами неизвестно, и программе самой надо выяснить высоту и ширину, как отверстия, так и кирпича.
Д) Площадь земельного участка вычисляется умножением его сторон A и B. В программу вводятся стороны двух участков (A1, B1 и A2, B2), пусть она напечатает ширину и длину того участка, что больше по площади. Ширина должна быть не больше длины.
Глава 15
Айда в Монте-Карло!
Монте-Карло – весёлый пригород в княжестве Монако, славный своими игорными заведениями. Там, по словам Поэта, жертвуют необходимым в надежде приобрести излишнее. Но к чему нам игорный бизнес, – спросите, – когда мы заняты программой-экзаменатором? Не забывайте, однако, что наш первоклашка пока ещё сам придумывает себе примеры, а это неразумно. Избавим его от ввода сомножителей, – пусть программа сама «изобретает» их. Потому и обращаемся к азартным играм.
Куда
Современные программы очень сложны. И, как любое крупное изделие, заключают в себе труд десятков и сотен специалистов. Трудно поверить, но большинство программистов, работающих над крупным проектом, не видят его в целом, что не мешает им выполнять свою часть работы. Как такое возможно?
Чтобы понять это, оглянитесь вокруг. Обойдутся ли жители города или страны друг без друга? Кем бы ты ни был – врачом, водителем или сапожником – не проживешь без услуг иных граждан, – все мы зависим друг от друга! Но спросите, к примеру, сталевара, куда пойдет выплавляемая им сталь? Он только плечами пожмет!
Работа программистов организована по тем же законам – законам специализации и кооперации. Специализация – это углубление в некоторую узкую область, специальность. Скажем, одни программисты наловчились писать драйверы, другие – базы данных, а третьи – графический интерфейс. Кооперация – это слаженное соединение усилий разных специалистов, – за это отвечает руководящая «верхушка» программного проекта (подобно тому, как правительство руководит страной).
Конечно, «руками водить», распределяя работу, может каждый (некоторые так и думают). Но толку будет чуть, если согласованную работу программистов не поддержать техническими средствами. Современные языки программирования, в том числе Паскаль, такие средства дают. Одно из них – механизм процедур и функций. Процедуры и функции – это готовые «кусочки» программ, выполняющие некоторые оговоренные действия. Иногда их называют общим именем – подпрограммы. Такие «кусочки» могут создаваться разными программистами и сохраняться в специальных файлах – библиотеках. Есть библиотеки и в Паскале.
Для применения библиотечной процедуры или функции достаточно знать её имя и список передаваемых ей параметров. А вот думать о том, как устроена эта процедура внутри, не обязательно. Хочешь выполнить какое-то действие из библиотеки? Тогда помести в нужном месте программы вызов подходящей процедуры и укажи параметры. Кстати, мы с вами уже делаем это, вызывая процедуры Readln и Writeln. В библиотеках Паскаля припасены процедуры и функции на многие случаи жизни, со временем вы узнаете о них больше.
Чем же отличаются функции от процедур? Функции обладают теми же возможностями, что и процедуры, но вдобавок возвращают значение некоторого типа (числовое, логическое или иное). Поэтому вызов функции можно вставлять внутрь выражения, что очень удобно. Как это работает, вы увидите сей же час.
Госпожа удача
Вернемся к нашему экзаменатору, где надо придумать способ формирования случайных чисел в пределах от 1 до 10. Будь под рукой игральный кубик из Монте-Карло, я бы не связывался с компьютером! Впрочем, в библиотеке Паскаля есть такой «кубик» – это функция по имени Random, что переводится как «случайный, беспорядочный». Этой функции необходимо задать один параметр – число N, определяющее предел для случайного числа. В ответ функция возвращает некоторое случайное число в диапазоне от нуля до N-1. Например, в следующем операторе в переменную X попадет некоторое число в диапазоне от 0 до 9.