- •1. Двоичная система счисления.
- •2. Восьмеричная система счисления.
- •3. Шестнадцатеричная система счисления.
- •4. Сложение и вычитание в 2, 8 и 16 c/c.
- •2. Вещественные числа (числа с плавающей запятой).
- •3. Логические данные.
- •2. Зарезервированные слова.
- •X a8 alpha Massiv z52d9 eps Res_52_a ___75
- •6. Метка.
- •2. Целые типы данных.
- •4. Вещественные типы.
- •1. Раздел описания меток.
- •2. Раздел описания констант.
- •3. Раздел описания типов.
- •4. Раздел описания переменных.
- •6. Раздел операторов.
- •7. Последовательность разделов.
- •1. Формульно-словесный способ.
- •2. Блок-схемный способ.
- •Ввод - вывод одномерного массива
- •2. Ввод массива из текстового файла.
- •3. Вывод одномерного массива на экран.
- •Примеры обработки одномерных массивов
- •1. Параметр цикла должен быть ординального типа.
- •2. Параметр должен быть описан в том же блоке, где находится сам оператор цикла.
- •5. В теле цикла параметр не должен изменяться.
- •6. Начальное и конечное значения параметра цикла вычисляются только один раз, до начала цикла.
- •7. При нормальном завершении цикла значение его параметра считается неопределенным.
- •Контроль ординальных переменных
- •Вставка элемента в упорядоченный массив
- •Удаление элементов из массива
- •«Школьный» алгоритм сортировки
- •Группировка массива методом прямой выборки
- •Группировка массива методом прямого обмена
- •Var c : array[1..10,1..15,1..8] of real.
- •1. Ввод элементов матрицы с клавиатуры.
- •2. Ввод матрицы из текстового файла.
- •3. Вывод матрицы на экран.
- •Тождественные и совместимые типы
- •Обработка в процедуре одномерных массивов с различными именами типов
- •Обработка в процедуре матриц с различными именами типов
- •Var s : string[V],
- •Процедуры и функции для обработки строк
- •Определение битовой структуры поля памяти
- •Процедуры и функции для файлов любого типа
- •Var p : pointer;
- •1. Формирование стека из текстового файла.
- •7. Определение значения и местоположения максимального элемента в стеке.
- •8. Удаление из стека максимального элемента.
- •9. Добавление элемента в упорядоченный стек.
- •2. Добавление нового элемента в очередь.
- •3. Удаление элемента из очереди.
- •6. Удаление произвольного элемента из очереди.
- •7. Добавление нового элемента в произвольное место очереди.
- •1. Формирование дека.
- •Var sin : integer;
- •Процедура заполнения FillChar
- •Процедура перемещения данных move
- •Управление экраном в текстовом режиме
- •Сохранение и восстановление экрана
- •Interface
- •Implementation
- •Процедуры управления текстовым режимом экрана
- •Intr(n:byte; Var Reg:Registers),
- •If KeyPressed then
- •Автоматическая оптимизация программ
- •1. Свертывание констант.
- •2. Слияние констант.
- •3. Вычисление по короткой схеме.
- •4. Удаление неиспользуемого кода.
- •If false then
- •5. Эффективная компоновка.
- •Оверлейная структура программы
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Использование сопроцессора
1. Параметр цикла должен быть ординального типа.
Параметр цикла определяет в конечном счете порядковый номер повторения данного цикла; следовательно, он имеет дискретный характер и должен быть описан одним из ординальных типов. Если в программе описать параметр цикла как вещественную переменную, то при трансляции будет выдано сообщение
Error 97: Invalid FOR control variable
(неправильный параметр цикла FOR).
2. Параметр должен быть описан в том же блоке, где находится сам оператор цикла.
Нарушение этого требования может привести к серьезным ошибкам при использовании подпрограмм и будет рассмотрено при изучении процедур и функций.
3. Выражения, определяющие начальное и конечное значения параметра ("Выражение 1" и "Выражение 2"), должны быть ординального типа, совместимого с типом самого параметра цикла.
Параметру цикла перед выполнением цикла присваивается значение выражения 1, в конце каждого цикла текущее значение параметра сравнивается со значением выражения 2, что и определяет требование совместимости типов параметра цикла и значений выражений 1 и 2. В случае нарушения данного требования при трансляции программы генерируется сообщение
Error 26: Type mismatсh (несоответствие типов).
4. Шаг изменения параметра цикла равен +1 или -1.
Если в программе шаг изменения параметра должен отличаться от значений +1 и -1, то нужно применить один из следующих способов:
- вместо оператора For использовать операторы While или Repeat;
- в цикле For задать соответствующий алгоритм изменения индексов.
Пример 1. Для массива просуммировать отдельно элементы с четными и нечетными индексами.
Type Ar = array[1..100] of real;
Var i,n : byte;
S1,S2 : real;
X : Ar;
Begin
Ввод n, X
Вариант 1:
S1:=0; S2:=0; i:=2;
While i<=n do
Begin
S1:=S1+x[i-1]; S2:=S2+x[i];
Inc(i,2);
End;
If odd(n) then
S1:=S1+x[n];
Вариант 2:
S1:=0; S2:=0;
For i:=1 to n div 2 do
Begin
S1:=S1+x[2*i-1]; S2:=S2+x[2*i];
End;
If odd(n) then
S1:=S1+x[n];
В каждом цикле обрабатываются два элемента массива Х. Если их количество n нечетное, то последний элемент x[n] добавляется в сумму S1 после окончания работы цикла.
Вариант 1 наиболее универсален в том смысле, что пригоден при любом шаге перебора элементов массива. Если же шаг равен 2, то для данной задачи наиболее эффективным является вариант 3.
Вариант 3:
S1:=0; S2:=0;
For i:=1 to n do
If odd(i) then
S1:=S1+x[i]
Else
S2:=S2+x[i];
5. В теле цикла параметр не должен изменяться.
Изменение параметра при каждом выполнении цикла непосредственно производят машинные команды, реализующие оператор For. Попытка изменения параметра в теле цикла зачастую приводит к получению неправильных результатов, в ряде случаев - к зацикливанию программы.
Пример 2. Определить индекс первого отрицательного элемента в массиве .
Type Ar = array[1..100] of real;
Var i,k,n : byte;
X : Ar;
Begin
Ввод n, X
k:=0;
For i:=1 to n do
If x[i]<0 then
Begin
k:=i; i:=n+1
End;
Writeln('k=',k);
В данном случае для принудительного завершения цикла использован оператор i:=n+1 вместо оператора Goto. Результат - зацикливание программы.