Новое на сайте

Множества в примерах
Учебник
05 Ноя 2010

Рассмотрим несколько примеров.

Пример. Пусть в вашем распоряжении имеется множество из трех монет разного достоинства: 1 р, 5 р, 10 р. Из этих монет можно составить следующие подмножества (их число равно 23 = 8):

  1. {1};
  2. {5};
  3. {10};
  4. {1, 5};
  5. {1, 10};
  6. {5, 10};
  7. {1, 5, 10};
  8. { }
Запись с вариантами
Учебник
04 Ноя 2010

Общий вид:

type v = record
    a: type1
    b: type2
    ……
    case n: typen of
        c1:(t11: type11;
            t12: type12; …);
        c2:(t21: type21;
            t22: type22; …);
        ……..
end;
var z: v;

Здесь z – переменная типа v; n – переменная, называемая переключателем; typen – тип переменной n.

Этому же типу должны принадлежать метки c1 и c2. Каждой метке соответствует набор полей t11, …. Эти поля являются компонентами варианта.

Записи (Record)
Учебник
31 Окт 2010

Запись – это структура, состоящая из фиксированного числа компонент, называемых полями. Данные одного поля разных записей имеют один и тот же тип, а разных полей могут иметь разные типы. Общий вид описания типа record:

type t = record
    id11, id12, …: type1;
    id21, id22, …: type2;
    ……………….
end;

здесь id – идентификаторы полей; type – типы полей; t – имя типа.

Пример. Данные комплексного вида можно описать переменной типа record.

type complex = record
    re, im: real
end;
Локальные и глобальные переменные
Учебник
31 Окт 2010

Напомним, что каждый модуль (процедура, функция, программа) состоит из заголовка (procedure…, function…, program…) и блока.

Если блок какой-либо процедуры p1 содержит внутри процедуру p2, то говорят, что p2 вложена в p1.

Пример.

procedure p1(x: real; var y: real);
    var c: integer;
    procedure p2(var z: real);
        …………………….
    end;
    begin
        …………………….
    end;

Любые идентификаторы, введенные внутри какого-либо блока (процедуры, функции) для описания переменных, констант, типов, процедур, называются локальными для данного блока. Такой блок вместе с вложенными в него модулями называют областью действия этих локальных переменных, констант, типов и процедур.

Процедуры и функции в качестве параметров
Учебник
31 Окт 2010

Такие параметры в списке формальных параметров представляются ключевыми словами procedure и function.

Примеры.

procedure p(procedure a); 

Здесь процедура p имеет один параметр-процедуру a.

procedure q(function s: real; b: real);

Процедура q имеет два параметра: параметр-функцию s и параметр-значение b.

procedure q(function f(i: integer): real);

Здесь формальный параметр f – функция от одного целого аргумента, результат f – вещественный.

Побочные эффекты
Учебник
31 Окт 2010

Если в теле процедуры (функции) используется некоторая нелокальная переменная, т.е. такая переменная, которая описана в основной части программы, то могут наблюдаться непредвиденные последствия.

Пример. Пусть функция f(x) имеет такой вид:

function f(x: real): real;
    begin
        v := v * x;
        f := sqrt(v) + x
    end;

т.е. в процессе работы функция f изменяет некоторую нелокальную величину v. Рассмотрим теперь два выражения, которые вычисляются в программе: f(x) + v и v + f(x).

Эти выражения дадут разные результаты, т.к. в первом случае к f(x) прибавляется уже измененное значение v (в процессе работы f), а во втором случае к первоначальному значению v добавляется f(x).

Параметры-переменные
Учебник
30 Окт 2010

Если перед именем формального параметра стоит ключевое слово var, то такой параметр есть параметр-переменная. Примерами таких параметров служат x1 и x2 в заголовке

procedure sq(a, b, c: real; var x1, x2: real);

Фактический параметр, соответствующий параметру-переменной, может быть только переменной (не константой и не выражением).

При вызове процедур (функций) параметры-переменные обрабатываются так: для формального параметра используется именно та ячейка, которая содержит соответствующий фактический параметр.

Пример. При вызове процедуры sq оператором sq(p, q, r, y, z) для переменных x1 и x2 используются непосредственно те ячейки, которые отведены для y и z. Поэтому оператор присваивания x1 := (-b + sqrt(d)) / (2 * a) засылает полученное значение в y.

Параметры-значения
Учебник
30 Окт 2010

Если в качестве формального параметра указана переменная, то такой параметр и есть параметр-значение. Примерами таких параметров служат параметры a, b и с в процедуре sq:

procedure sq(a, b, c: real; var x1, x2: real);

В этом случае фактическим параметром, соответствующим a либо b либо c, может быть любое выражение соответствующего типа, в частности, константа.

Например, обратиться к sq можно так:

sq((25./3 + 2) * 2, -1.5, (8.2 – 3.1) / 3, x1, x2);
Формальные параметры
Учебник
28 Окт 2010

Формальные параметры – это наименование переменных, через которые передается информация из программы в процедуру либо из процедуры в программу.

Пусть, например, процедура sq осуществляет решение квадратного уравнения ax2 + bx + c = 0. Тогда она должна иметь пять формальных параметров: для значений коэффициентов a, b, c и для результатов: x1 и x2.

Для того, чтобы запустить процедуру в работу, необходимо к ней обратиться (ее вызвать). Вызов процедуры N производится оператором вида

N (p1, p2, p3, …);
Операторы Pascal
Учебник
27 Окт 2010

Под операторами в языке Паскаль подразумевают только описание действий. Операторы отделяются друг от друга только точкой с запятой. Если оператор стоит перед end, until или else, то в этом случае точка с запятой не ставится.

Оператор присваивания

Общий вид:

v := a;

здесь v – переменная, a – выражение, := - операция присваивания. Выражение a может содержать константы, переменные, названия функций, знаки операций и скобки.

Пример. f := 3 * C + 2 * sin(x);