Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВМИП часть 1.doc
Скачиваний:
15
Добавлен:
22.02.2015
Размер:
187.9 Кб
Скачать

Var var

x, y, max : integer; g,k : real;

begin begin

……… ……

if x > max then if g > 5 then

y := max k := k+g

else else if g = 5 then

y := x; k := 0

……… else k := k-g;

end. end.

Часть ELSE <оператор2> может быть опущена. Тогда при значении TRUE условного выражения выполняется <оператор1>, иначе он пропускается.

Оператор выбора.

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

Структура: CASE <ключ_выбора> OF <список_выбора> [ELSE <операторы>] END

<список_выбора> - одна или более конструкций вида:

<константа_выбора > : < оператор>;

<константа_выбора > - константа того же типа, что и <ключ_выбора>.

Работает следующим образом: вначале вычисляется значение <ключ_выбора>, затем в последовательности операторов <список_выбора> отыскивается тот, которому предшествует константа, равная вычисленному значению. Найденный оператор выполняется, после чего оператор выбора завершает работу. Если в списке выбора не будет найдена константа, соответствующая вычисленному значению ключа выбора, то управление передается операторам, стоящим за словом ELSE. Часть ELSE <операторы> можно опускать.

Пример:

Program Calc;

var

operation : Char; {знак операции}

x, y, z : real;

stop : Boolean;

begin

stop := false;

repeat

wtiteln;

write(‘x, y =’);

readln(x, y);

write(‘операция:’);

readln(operation);

case operation of

‘+’ : z := x + y;

‘-’ : z := x - y;

‘*’ : z := x * y;

‘/’ : z := x / y;

else

stop := true;

end;

if not stop then

writeln(‘ результат =', z)

until stop

end.

  1. Операторы языка Pascal. Циклические операторы: for, while, repeat.

Имеются три оператора, с помощью которых можно запрограммировать повторяющиеся фрагменты программ.

  1. Счетный оператор цикла FOR. Структура:

FOR <параметр цикла> := <начальное значение> TO <конечное> DO <операторы>

<параметр цикла> - переменная типа integer, <начальное значение> и <конечное значение> - выражения того же типа.

Вначале вычисляется выражение <начальное значение> и осуществляется присваивание

<параметр цикла> := <начальное значение>. После этого циклически повторяются:

а) проверка условия <параметр цикла> <= конечное значение>. Если условие не выполнено, то оператор завершает свою работу.

б) выполнение оператора <оператор>.

в) наращивание переменной <параметр цикла> на единицу.

Пример: {сумма всех целых чисел в диапазоне от 1 до N}

program sum_of_integer;

var i, N, s : integer;

begin

write(‘Vvedite N’);

readln(N);

s := 0;

for i := 1 to N do

s := s+i;

writeln(‘Sum =’, s)

end.

  1. Оператор цикла WHILE. Структура:

WHILE <условие> DO <оператор>.

<условие> - выражение логического типа.

Если выражение <условие> имеет значение TRUE, то выполняется оператор <оператор>. После чего вычисляется выражение <условие> и его проверка повторяется. Если <условие> имеет значение FALSE, то оператор прекращает свою работу.

Пример:

program epsilon; {вычисляет и выводит на экран эпсилон}

var eps : real;

begin

eps := 1;

while eps/2 + 1 > 1 do

eps := eps/2

writeln(‘epsilon =’, eps)

end.

  1. Оператор цикла REPEAT..UNTIL.

REPEAT <тело цикла> UNTIL <условие>

<тело цикла> - произвольная последовательность операторов

Операторы <тело цикла> выполняются хотя бы раз, после чего вычисляется выражение <условие>: если его значение FALSE, операторы <тело цикла> повторяются, если TRUE – то оператор завершает свою работу.

Пример:

program codes_of_char; {вводит символ и выводит на экран его код}

var ch : char; {вводимый символ}

const cr = 13; {его код}

begin

repeat

readln(ch);

writeln(ch,’ = ‘, ord(ch))

until ord(ch) = cr

end;

Пара REPEAT..UNTIL подобна паре BEGIN..END, поэтому точку с запятой перед UNTIL ставить не обязательно.

Для гибкого управления циклическими параметрами FOR, WHILE, REPEAT включены две процедуры:

BREAK – немедленный выход из цикла; управление передается оператору, стоящему за концом циклического оператора.

CONTINUE – досрочное завершение очередного прохода цикла. Эквивалентен передаче управления в самый конец циклического оператора.

  1. Операции языка Pascal. Свойства. Унарные операции. Бинарные операции отношения.

  2. Операции языка Pascal. Свойства. Бинарные операции умножения, сложения.

Унарные операции: к ним относятся логическая операция not.

Бинарные операции: к ним относятся логические операции and, or, xor.

Побитовое отрицание (или побитовое НЕ, или дополнение) — это унарная операция, действие которой эквивалентно применению логического отрицания к каждому биту двоичного представления операнда. Другими словами, на той позиции, где в двоичном представлении операнда был 0, в результате будет 1, и, наоборот, где была 1, там будет 0.

НЕ

01

10

Побитовое И — это бинарная операция, действие которой эквивалентно применению логического И к каждой паре битов, которые стоят на одинаковых позициях в двоичных представлениях операндов. Другими словами, если оба соответствующих бита операндов равны 1, результирующий двоичный разряд равен 1; если же хотя бы один бит из пары равен 0, результирующий двоичный разряд равен 0.

И

0011

0101

0001

Побитовое ИЛИ — это бинарная операция, действие которой эквивалентно применению логического ИЛИ к каждой паре битов, которые стоят на одинаковых позициях в двоичных представлениях операндов. Другими словами, если оба соответствующих бита операндов равны 0, двоичный разряд результата равен 0; если же хотя бы один бит из пары равен 1, двоичный разряд результата равен 1.

ИЛИ

0011

0101

0111

Побитовое исключающее ИЛИ (или побитовое сложение по модулю два) — это бинарная операция, действие которой эквивалентно применению логического исключающего ИЛИ к каждой паре битов, которые стоят на одинаковых позициях в двоичных представлениях операндов. Другими словами, если соответствующие биты операндов различны, то двоичный разряд результата равен 1; если же биты совпадают, то двоичный разряд результата равен 0.

ИСКЛ.

ИЛИ

0001

0101

0110

В языке определены арифметические операции: + (сложение), - (вычитание), * (умножение), / (деление), div (деление целочисленное).

mod – получение остатка от целочисленного деления (пример 5 mod 2 = 1).

Операции отношения (сравнения): = (равно), <> (не равно), < (меньше), > (больше), <= (меньше или равно), >= (больше или равно). В таких операция должны участвовать однотипные операнды. Исключения сделаны для integer и real, которые могут сравниваться друг с другом. Результат применения операции отношения к любым операндам имеет тип Boolean.Сравнение двух строк осуществляется посимвольно. Если одна из строк короче другой, недостающие символы заменяются нулями.

Приоритет операций.

При вычислении выражения любого типа приоритет вычислений определяется расставленными скобками, а при их отсутствии – по таблице:

Приоритет

Операция

1

not, @

2

*, /, div, mod, and, shl, shr

3

+, -, or, xor

4

=, < >, >, >=, <, <=, in

  1. Основные принципы ООП. Классы и объекты.

Цель ООП – связать данные с обрабатывающими эти данные процедурами в единое целое – объект.

Основные принципы ООП:

  1. инкапсуляция – объединение в единое целое данных и алгоритмов обработки данных. В рамках ООП данных называются полями объекта, а алгоритмы – объектными методиками. Инкапсуляция позволяет изолировать объект. Существенно повышает надежность разрабатываемых программ, т.к. локализованные в объекте алгоритмы обмениваются с программой сравнительно небольшими объемами данных, причем количество и тип этих данных обычно тщательно контролируются.

  2. наследование – свойство объектов порождать своих потомков. Объект-потомок автоматически наследует от родителя все поля и методы, может дополнять объекты новыми полями и заменять (перекрывать) методы родителя или дополнять их.

  3. полиморфизм – свойство родственных объектов (т.е. объектов, имеющих общего родителя) решать схожие по смыслу проблемы разными способами. Изменяя алгоритм метода в потомках объекта, можно придавать этим потомкам отсутствующие у родителя свойства. Для изменения метода нужно перекрыть его в потомке (т.е. объявить в потомке одноименный метод и реализовать в нем нужные действия). В результате в объекте-родителе и объекте-потомке будут действовать два одноименных метода, имеющие разную алгоритмическую основу, и придающие объектам разные свойства.

Создание объектов.

Для создания объектов используются три зарезервированных слова: object, constructor, desrtuctor.

Object используется для описания объекта. Описание объекта помещается в разделе описания типов:

type

myobject = object

{поля объекта}

{методы объекта}

end;

Если объект порождается от какого-либо родителя, имя родителя указывается в круглых скобках сразу за словом object:

type

mydescendantobject = object(myobject)

end;

Любой объект может иметь сколько угодно потомков, но только одного родителя.

Пример: объект-родитель TGraphObject

type TGraphObject = object

private {поля объекта будут скрыты от пользователя}

X, Y : integer; {координаты реперной точки}

color : word; {цвет фигуры}

public {методы объекта будут доступны пользователю}

constructor Init(aX, aY : integer; aColor : word); {создает экземпляр объекта}

procedure draw(aColor : word); virtual; {рисует объект заданным цветом}

procedure show; {вычерчивает объект – вычерчивает его заданным цветом}

procedure hide; {прячет объект – вычерчивает его цветом фона}

procedure moveto(dX, dY : integer); {перемещает объект в точку с координатами X+dX, Y+dY}

end;

  1. Классы и объекты. Объявление классов, определение процедур классов. Наследование классов.

Компилятор FPC поддерживает объектно-ориентированное программирование (ООП). Объекты могут быть интерпретированы, как специальный тип записи, в которой опеределены поля со ссылками на используемые методы. Запись содержит все поля, которые декларируются при объявлении объектов, и указатели на методы, которые ассоциируются с этим объектным типом.

ООП позволяет:

  • Сократить объем и трудоемкость подготовки программ, имеющих дело с множеством связанных друг с другом объектов.

  • Сделать объекты практически независимыми друг от друга.

  • Защитить внутреннюю реализацию объектов.

Создаваемое приложение состоит из объектов, которые взаимодействуют друг с другом. Каждый объект – экземпляр класса с конкретными данными,создается в динамической памяти.

Для обратной совместимости  со старыми версиями компилятора сохранен тип TObject, позволяющий создавать объекты в статической памяти..

Класс – это обобщение объекта.

Класс – тип, сочетающий в себе абстрактные данные и методы. Экземпляр класса – объект. Он содержит конкретные данные.

Класс содержит в себе члены. Членом класса может быть:

  • Поле (Field) с данными. Согласно принятому соглашению имена полей начинают с буквы F.

  • Свойство (Property) для доступа к полям.

  • Метод (процедура или функция), определяющее поведение объекта.

  • Событие (Event), на которые объект реагирует.

Члены класса могут группироваться. Группы регулируют видимость членов класса:

  • Private – частные. Доступны внутри модуля, где они находятся.

  • Protected –защищенные. Доступны внутри модуля, где они находятся, и для порожденных классов.

  • Public – общедоступные. Доступны в любом месте программы, где доступен класс.

  • Published – опубликованные. Дополнительно к public порождают информацию во время выполнения программы для проверок.

В классе-потомке можно изменять видимость свойств в сторону повышения. Например, свойство из раздела protected можно перенести в public, но не в private. Доступ к члену класса по составному имени: <Класс>.<Член класса>

Классы и объекты могут наследовать поля и методы у своих предков. Это означает, что эти поля и методы могут быть использованы так, будто они были включены в классы или объекты, объявляемые как  потомки.

Классы FPC организованы иерархически. Верхушка иерархического дерева – абстрактный класс TObject, определенный в модуле System. В нем определены средства, необходимые всем классам: конструктор, деструктор и др. Основные классы:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]