Песни о Паскале
Шрифт:
Я обозвал SizeOf псевдофункцией за то, что никаких вычислений она не делает, – результат вычисляется при компиляции программы. Ведь компилятор сам «знает» объём памяти, занимаемой любым типом данных, и подставляет в программу уже готовое число.
Псевдофункция SizeOf удобна, и вдобавок улучшает переносимость программ. Например, в разных режимах компиляции Free Pascal и в разных компиляторах размер типа Integer может отличаться (2 или 4 байта). Применяя функцию SizeOf, вам не придется задумываться об этом и менять вручную одни числа на другие, – компилятор сделает это за вас.
Итоги
•
• Тип Extended предпочтительней использовать для вычислений, тип Single – для хранения больших объёмов данных в памяти и на диске.
• Вещественные числа печатаются либо в форме с плавающей точкой, либо в форме с фиксированной точкой.
• Вещественные числа, в отличие от целых, – приближенные. Сравнивать их между собой можно лишь с некоторой точностью.
• Вещественным переменным разрешено присваивать целые значения, при этом преобразование типов происходит автоматически.
• Целым переменным нельзя присвоить вещественные значения непосредственно, для этого используют либо функцию отсечения дробной части Trunc, либо функцию округления Round.
• Порядковые типы данных допускают взаимное преобразование посредством псевдофункций, имена которых совпадают с именами типов данных.
• Пользовательские типы данных объявляют внутри секции TYPE, такие типы данных делают программу гибче и надежней.
• Размер памяти, занимаемый переменной любого типа, определяют псевдофункцией SizeOf. Её применение снижает зависимость программы от особенностей компиляторов и компьютерных платформ.
А слабо?
А) Напишите две функции, округляющие вещественное число:
• до большего значения (например: 3.1 –> 4; 3.9 –> 4);
• до меньшего значения (например: 3.1 –> 3; 3.9 –> 3).
Б) Ваша процедура принимает строковую переменную, вычисляет среднее арифметическое кодов её символов и печатает его с двумя цифрами после точки.
В) Напечатайте с тремя знаками после точки 20 случайных вещественных чисел в диапазоне от 0 до 10. Подсказка: для формирования дробных чисел можно делить случайное число на другое число, например, Random(10000)/1000.
Г) Напечатайте с тремя знаками после точки 20 случайных чисел в диапазоне от 0 до 10 так, чтобы числа следовали по возрастанию. Подсказка: сравнивайте очередное число с предыдущим.
Д) Программа для подсчета стоимости покупок. Для каждой покупки пользователь вводит два действительных числа: вес покупки и цену за 1 кг в рублях. Признак завершения ввода данных – нулевой вес. Программа должна напечатать общую стоимость с точностью до копейки (два знака после точки) с округлением в большую сторону. Проверьте результат на калькуляторе.
Е) Квадратный корень. Квадрат – это равносторонний прямоугольник,
Для извлечения корня в Паскале есть функция SQRT. Напишите собственную функцию MySQRT, прибегнув к методу последовательных приближений. В грубом, нулевом приближении примем D0=1. Последующее, более точные значения D будем вычислять по формуле
Di+1 = (Di + S/Di)/2
Так, при S=9 получим D1=(1+9/1)/2= 5, D2=(5+9/5)/2= 3.4 и так далее, пока абсолютная разность между двумя последовательными значениями D станет пренебрежимо мала. Функция MySQRT должна принять число и вычислить его корень с точностью 0.0001. Внутри функции напечатайте промежуточные значения D. Подсказка: для Di и Di+1 вам потребуются лишь две локальные переменные.
Ж) В тесто кладут четырех главных ингредиента: муку, сахар, яичный порошок и молоко. Все это смешивается в пропорции, заданной рецептом. Например, рецепт 100:5:7:500 означает, что на 100 граммов муки кладут 5 граммов сахара, 7 граммов яичного порошка и 500 граммов молока. У пекаря есть некоторое количество всех ингредиентов, и он хочет замесить из них максимально возможное количество теста, соблюдая рецепт. Ваша программа должна ввести:
• Рецепт – это 4 целых числа.
• Исходное количество ингредиентов – это 4 действительных числа.
Программа должна напечатать:
• Общее количество полученного теста с точностью два знака после точки.
• Остатки ингредиентов – 4 числа с точностью два знака после точки.
Глава 34
Структура программы
В этой главе мы рассмотрим структуру программы, и завершим тем самым боевое построение нашего войска, начатое в 32-й главе.
Управляющие структуры
Управляющие структуры составляют основу языков программирования. Ключевых структур всего три:
• линейная последовательность – это естественный порядок выполнения операторов друг за другом, то есть слева направо и сверху вниз;
• альтернатива – выбор одного из двух или нескольких направлений исполнения операторов;
• цикл – повторное исполнение операторов до соблюдения некоторого условия.