![](/user_photo/2706_HbeT2.jpg)
- •Билет 1. Базовые понятия программирования. Действие, процесс, алгоритм, программа.
- •Билет 2. Функциональная структура эвм. Основные устройства эвм, их функциональные характеристики.
- •1972Г – Дейкстра – Книга о базисе и структурированном программировании.
- •Выбор из нескольких альтернатив. Реализация в Pascal.
- •Документирование программы:
- •1. Постановка задачи (спецификация задачи: в спецификации различают две существенно разные ее части: функциональную и эксплуатационную спецификацию.
- •Классификация алгоритмов внутренней сортировки
- •Концепция структурного программирования:
- •Локализация и исправление ошибок в системе отладки
- •Метод деления пополам.
- •Мобильность программ, отличие турбо паскаля от стандартного
- •Надежность программы, организация надежного ввода.
- •Основные декомпазиционные структуры программ
- •Основные правила композиции структурированных программ.
- •Основные стратегии проектируемых алгоритмов
- •Основные действия при отладке
- •Побочный эффект
- •1. Использовать процедуры с параметрами (чистые процедуры), за исключением явных случаев, когда параметры не нужны. Доводы в пользу использования чистых процедур:
- •2. Глобальные переменные в процедуре целесообразно использовать в след. Основных случаях:
- •Правила записи программируемого модуля
- •Скалярные типы данных в языке Pascal.
- •Структурные уровни яп
- •Массивы.
- •Функциональное и структурное тестирование
- •Характеристика восходящих и нисходящих способов отладки
- •Цель и содержание отладки:
- •Чистые процедуры. Правила и способы подстановки параметров
- •Эффективность программы
Скалярные типы данных в языке Pascal.
В основе тип переменной – мн-во значений, которые принимает переменная. С каждым типом связан набор операций.
Типы бывают:
- структурированными
- простыми
- указатели
- строки
- процедурные типы
- объекты
В свою очередь простые типы подразделяются на:
- стандартный
- определяемый (задается с помощью правил)
СТАНДАРТНЫЙ ТИП:
1) упорядоченный:
1. целый:
- integer -32768..+32767
- byte 0..255
- word 0..65535
- shortint -128..+128
- longint -2147483648..+2147483647
Стандартные процедуры и функции:
abs, chr, dec, inc, odd, random, sqr, sqrt
2. логический:
true/false (1/0)
3. литерный: ASCII – American Standard Code for Information Interchange
Стандартные процедуры и функции:
ord, upcase
4. перечисляемый:
Перечисляемый тип задается перечислением тех значений, которые он может получать. Каждое значение именуется некоторым идентификатором и располагается в списке, обрамленном круглыми скобками, например:
type
colors = (red, white, blue);
Соответствие между значениями перечисляемого типа и порядковыми номерами этих значений устанавливается порядком перечисления: первое значение в списке получает порядковый номер 0, второе - 1 и т.д. Максимальная мощность перечисляе¬мого типа составляет 65536 значений, поэтому фактически перечисляемый тип задает некоторое подмножество целого типа WORD и может рассматриваться как компактное объявление сразу группы целочисленных констант со значениями 0, 1 и т.д.
Использование перечисляемых типов повышает надежность программ благодаря возможности контроля тех значений, которые получают соответствующие переменные.
5. тип-диапазон:
Тип-диапазон есть подмножество своего базового типа, в качестве которого может выступать любой порядковый тип, кроме типа-диапазона. Тип-диапазон задается границами своих значений внутри базового типа:
<мин.знач.>..<макс.знач.>
Здесь <мин.знач> - минимальное значение типа-диапазона; <макс.знач> - максимальное его значение.
2) неупорядоченный:
вещественный.
Расширение для вещественного типа в Турбо-Паскале:
- real 11..12
- single 7..8
- double 15..16
- extended 19..20
- comp 19..20
Структурные уровни яп
Структура программы. Локализация объектов.
Программа на языке Паскаль имеет блочную структуру:
<программа>::=<заголовок><блок> (не пугать с сегмент-блоком!)
<описание процедуры>::=<заголовок><блок>
<блок>::=<раздел описаний ><составной оператор>
В программный блок могут быть вложены процедурные блоки, в которые, в свою очередь, могут быть вложены блоки других процедур, и т.д.
Любой объект должен быть описан в каком-либо блоке. Говорят, что объект локализован в том блоке, где он описан. Это значит, что он существует в этом блоке и перестает существовать за пределами этого блока.
Если объект используется вне того блока, где он описан, то он называется нелокальным.
Нелокальный объект называется стандартным, если он определен в самом языке. Например, константы Pi, Maxint, функции Ео? Sin - стандартные.
Если нелокальный объект описан в программе, то он называется глобальным.
ПРИМЕР.
program R;
var a,i:real;
procedure P1;
var b:real;
procedure P2;
var x,i:real;
begin
i:=2
begin
end{P2};
i:=99; P2;
writeln(i); {99}
end{P1};
function F:real;
var Z:real;
begin
i:=0; F:=i;
end{F};
begin
P1; writeln(i); {99}
writeln(i+F); {99+0=0(?)}
writeln(F+i); {0+0=0}
end{R}.
Переменные a, i - локализованы в программе R; b - локализована в процедуре Р1; х - локализована в процедуре Р2 и т.д.
Переменную а можно использовать в любой процедуре программы R, так как она глобальна по отношению к этим процедурам.
Переменная b - локальна в процедуре Р1 и глобальна по отношению к процедуре Р2, поэтому в этих процедурах она может быть использована. Переменную b нельзя использовать функцией F и в программе R, так как она теряет свое значение при выходе из процедуры Р1.
Переменная z можег быть использована только функцией F, где она описана.
Если некоторая переменная (i) описана и во внешнем блоке (R) и во внутреннем (Р2), то во внутреннем блоке действует описание его локальной переменной i. Значение глобальной переменной i при входе в процедуру Р2 автоматически сохраняется, а при выходе из этой процедуры - восстанавливается.
Те же правила локализации распространяются и на любые другие объекты, в том числе и на процедуры.
Процедура Р1 и функция F описаны в программе R, поэтому они могут вызываться из программы R. Процедура Р2 описана (а значит и локализована) в процедуре Р1, следовательно она может вызываться из процедуры Р1 и может вызывать Р1 как глобальную.
В то же время, невозможно обратиться из программы R и из функции F к процедуре Р2, так как Р2 является локальным объектом процедуры Р1.
При взаимодействии Р1 и F действует следующее правило языка Паскаль: описание объекта должно предшествовать его вызову. Поэтому F может вызывать Р1, а Р1 не может вызывать F, так как процедура Р1 описана раньше, чем функция F, Чтобы установить равноправие P1 и F, следует перед описанием процедуры Р1 добавить опережающее описание функции F:
function F:real;forward;
ЛОКАЛИЗАЦИЯ ПЕРЕМЕННЫХ:
1) R вызывает:
P1 - доступно, P2 - недоступно, F - доступно;
2) P1 вызывает:
Р1 - рекурсия, Р2 - доступно, F - недоступно;
3) Р2 вызывает:
Р1 - доступно, Р2 - рекурсия, F - недоступно;
4) F вызывает:
Р1 - доступно, Р2 - недоступно, F - рекурсия.