
- •Билет №1
- •Билет №8
- •Билет №10
- •Билет №7
- •1. Внешняя память компьютера. Различные типы носителей информации (информационная емкость, быстродействие и т.Д.).
- •Билет №9
- •Непозиционные системы
- •Позиционная система:
- •1. Измерение информации: содержательный и алфавитный подходы. Единицы измерения информации.
- •Единицы количества информации
- •Например, слово «мама» кодируется 32-разрядным двоичным числом:
- •Физическая и логическая структура магнитных дисков
- •Структура программы, или главный порядок
- •Идентификаторы, или имена
- •Стандартные типы данных
- •Переменные, или реализация типов
- •Нестандартные типы или типы, определяемые программистом
- •Операторы
- •Выполнение простых операторов или как это работает
- •Процедуры и функции, или как структурировать программы
- •Первая программа, или с чего начинают все всегда и везде
Процедуры и функции, или как структурировать программы
Часто повторяющиеся участки программы, да и просто функционально законченные фрагменты кода, рекомендуется выделять в процедуры. Объявление процедуры производится в любой части программы до ее первого использования (и, конечно, до начала основной программы) следующим образом.
Procedure <имя процедуры>
[(<список_параметров>)];
[Var часть] [Const часть] Begin
{тело процедуры} [<операторы>]
End;
Именем процедуры может являться любой уникальный идентификатор. Список параметров должен состоять из одной или нескольких конструкций следующего вида:
[Var] <имя формального параметра>: <тип параметра>
разделенных точками с запятой, где именем параметра является идентификатор, с которым ассоциируется значение фактически переданного процедуре параметра (именно значение, а не переменная, передаваемая в качестве параметра), а типом параметра - стандартный или ранее определенный тип. Если перед именем параметра стоит ключевое слово Var, то изменение данного параметра в теле процедуры приведет к изменению значения переменной, переданной в качестве параметра.
Вызов процедуры производится так:
<имя процедуры> [(<список фактических параметров>)];
При этом производится выталкивание в стек передаваемых параметров и адреса возврата, выделение в стеке места под объявленные в процедуре переменные и переход к выполнению первого оператора тела процедуры. По достижении конца тела процедуры (слова End) внутренние (локальные) переменные процедуры удаляются из стека и переход к оператору, следующему за вызовом процедуры.
Аналогичным образом выполняются функции. Объявление функции выглядит так:
Function <имя_функции>
[(<список_параметров>)]: тип_результата;
[Var часть] [Const часть] Begin
{тело функции} [<операторы>]
End;
Единственным отличием функций от процедур является возможность возврата некоторого значения. Указание конкретного значения, возвращаемое функций, производится путем присваивания в теле функции идентификатору имени функции данного значения. Естественно, что таких присваиваний может быть несколько, при этом значение возвращаемое функцией будет зависеть от того, какое из таких присваиваний было произведено последним. В Turbo Pascal, начиная с версии 7.0 возможен вызов функции без использования возвращаемого ею значения - аналогично процедуре. Так как при возврате значение функции находится, за редким исключением, в регистрах процессора, накладываются ограничения на типы результатов, возвращаемых функциями. Функции могут возвращать значения простых типов и строки.
Первая программа, или с чего начинают все всегда и везде
Собственно, прочитав этот текст вы имеете представление о восьмидесяти процентах синтаксических структур на Pascal'е. Осталось набрать стандартную первую программу
Program Hello; {привет, значит} Var
I: Integer;
Begin
WriteLN('Hello, World!'); Write('Enter the integer number, please '); ReadLN(I); WriteLN('You entered number greater than ', I-1, ', namely ', I);
End.
Стоит обратить внимание на разницу в выполнении WriteLN и Write.