Перевод числа из десятичной системы счисления в шестнадцатеричную.

Напишем программу, которая вводит с клавиатуры целое число в диапазоне от 0 до 15 и преобразует его к шестнадцатеричной системе счисления. Напомню, что в шестнадцатеричной системе счисления числа в диапазоне от 0 до 9 соответствуют таким же числам в ...

Процедуры Dec и Inc в Pascal.

При работе с целыми числами используются процедуры DEC и INC. Процедура Dec уменьшает число на определенное значение, а процедура Inc увеличивает число на определенное значение.

Процедуры STR и VAL.

В строковую переменную можно записывать не только буквы, но и цифры. Однако это будут не числа, как таковые, а их символьное представление. Для преобразования символьных представлений числа в само число, и наоборот, используются процедуры STR и VAl.

...

Циклы и массивы

Тип данных Integer.

Тип INTEGER (целый). Этот тип представляет множество целых чисел диапазона от -32768 до 32767. В памяти ЭВМ  под целое число отводится два байта (16 бит).

ЗАПИСИ. ТИП ДАННЫХ RECORD.

В описании данных и связей между ними используют понятия: запись логическая и запись физическая. Физическое описание данных определяет способ их хранения во внешней памяти ЭВМ. Логическое описание ...

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

Отличие состоит только в заголовках. Заголовок процедуры всегда начинается ключевым словом PROCEDURE, а программы — PROGRAM, которое, впрочем, писать необязательно. Процедуры могут быть простыми и маленькими (всего с десяток операторов), а могут быть очень сложными и большими (несколько сотен операторов). Процедуры могут содержать свои собственные процедуры и функции. Поэтому на процедуры, как и на программы, распространяется методология проектирования программных систем. Эта методология предусматривает разработку спецификации на каждую программную единицу, в том числе и на процедуру.
Спецификация – это точное, однозначное, недвусмысленное описание, написанное постановщиком задачи для программиста. Спецификация включает в себя концептуальное описание программной единицы, описание потоков данных, подробный алгоритм, и, возможно, другие разделы, которые зависят от выбранного метода проектирования.
Построим спецификацию для процедуры MOD1 программы PR7 (см. пример 7).
Назначение процедуры. Ввод с клавиатуры двумерного массива размерностью MxN.
Описание потоков данных. Существуют специальные диаграммы Варнье-Орра для описания потоков данных, которые применяются в информационных системах. Однако наш пример достаточно прост, поэтому можно ограничится табличным описанием данных, с которыми работает описываемая процедура. Эти данные сведены в табл. 1.1.

procedurih...

Напомним, что параметры-переменные в списке формальных параметров процедуры отличаются от параметров-значений наличием ключевого слова VAR, расположенного перед перечнем переменных. Переменные I и J являются локальными для процедуры MOD1, поэтому в табл. 1.1 не представлены.
Алгоритм. Алгоритм подпрограммы достаточно прост и описан ниже с помощью структурограммы.

procedurih....

Спецификации процедур MOD2 и MOD3 аналогичны процедуре MOD1. Попробуйте составить их сами.

Размещение процедур и функций в оперативной памяти.

В языке Паскаль используется два способа передачи параметров: по значению и ссылке (адресу переменной). Соответственно различают параметры-значения и параметры-переменные.
При обращении в программе к процедуре или функции в оперативной памяти ЭВМ (рис. 1.6) в области «Рекурсивного стека» создается «копия» рабочих полей этой подпрограммы, содержащая всю локальную для этой подпрограммы информацию, необходимую для ее выполнения.

procedurih.....

Префикс программного сегмента строится операционной системой при загрузке *.ЕХЕ модуля в оперативную память ЭВМ, представляет собой совокупность данных, важных для выполнения программы под управлением операционной системой. Остальная память выделяется для программы на время ее выполнения. Рекурсивный стек размещается в памяти непосредственно перед верхней границей памяти и заполняется страницами по мере вызова процедур и функций при выполнении программы. Структура страницы представлена на рис. 1.7.

procedurih......

Поле 5 присутствует только в странице, отводимой при вызове функции. В это поле записывается результат (значение) функции, которое будет возвращено в тело вызывающего программного модуля. Параметры (поле 4) — это значения переменных, переданных в функцию или процедуру как параметры-значения. Для параметров-переменных здесь хранятся только адреса, а сами переменные находятся либо в поле 5 «Глобальные переменные», либо в поле 2 «Локальные переменные» одной из предыдущих страниц стека, если данная процедура (функция) была вызвана другой подпрограммой. Указатель возврата (адрес) обеспечивает выход из подпрограммы после ее завершения на оператор, следующий за оператором вызова подпрограммы. Если в подпрограмме используются переменные более высоких уровней вложения, то для связи с ними необходимо поле 1, содержащее адреса этих переменных.

Некоторые соображения по использованию подпрограмм.

  • Именно такая реализация подпрограмм определяет то, что локальные переменные недоступны из более высоких уровней, так как они создаются только на время обращения к подпрограмме и уничтожаются при ее завершении (стирается страница стека).
  • Величина параметра-значения хранится в странице стека только в процессе выполнения подпрограммы и стирается при ее завершении, а значение параметра-переменной хранится на более высоком уровне и меняется подпрограммой во время ее выполнения. Когда страница стека стирается, то уничтожается лишь адрес этой переменной, а значение сохраняется.
  • Все идентификаторы в подпрограмме (основной программе) должны быть уникальными. Если программист использует идентификаторы, которые совпадают с именами встроенных функций или процедур, то последние становятся недоступными в пределах области действия подпрограммы. Аналогично для переменных. Если программист вводит локальную переменную с именем уже описанной ранее глобальной переменной, то в данной подпрограмме эта глобальная переменная становится недоступной.
  • Динамическая организация выполнения подпрограмм делает возможным вызов подпрограммой самой себя с новыми значениями фактических параметров. Это называется рекурсией.
  • Вложенность описания подпрограмм не должна превышать 10. Это не относится к рекурсиям, то есть вложенности при выполнении, которая ограничивается только физическими размерами поля ОЗУ, отводимого под стек.
  • Использование подпрограмм приводит к существенным затратам времени, так как осуществляется формирование стека и связывание формальных и фактических параметров. Поэтому, если вызовов подпрограмм слишком много, то временные характеристики могут быть существенно хуже той же программы, но без подпрограмм. Для своего телефона Вы можете скачать opera mini бесплатно со всеми современными возможностями.

Предыдущая статья: Описание процедур.
Оглавление: Лекции по Pascal. Часть 2.
Следующая статья: РАБОТА СО СТРОКОВЫМИ ДАННЫМИ.


   ГлавнаяПаскальЛекции по Pascal. Часть 2.Работа со строковыми данными.