- •Алгоритм. Свойства алгоритма.
- •2. Алфавит языка Pascal.
- •3. Структура Pascal-программы.
- •4. Идентификаторы. Переменные.
- •5. Константы. Виды констант.
- •6. Типы данных языка Pascal
- •7. Порядковые типы данных и стандартные подпрограммы для их обработки
- •8. Операции. Арифметические операции. Арифметические выражения
- •10. Преобразование типов данных. Стандартные функции преобразования типов данных.
- •9. Стандартные арифметические функции. Порядок вычислений.
- •11. Ввод с консоли. Вывод на консоль. Форматированный вывод.
- •12. Комментарии. Простейшие операторы языка Pascal.
- •13. Условный оператор if.
- •14. Оператор выбора case.
- •15. Метки и безусловный переход. Операторы break и continue.
- •16. Оператор циклов for-to.
- •17. Оператор циклов for-downto.
- •20. Массивы. Описание переменных размерностей. Обращение к компонентам массива.
- •21. Многомерные массивы. Задание массива константой.
- •22. Символы. Символ-константа. Операции с символами. Стандартные функции для работы с символами.
- •23. Строки. Строка-константа. Операции со строками. Стандартные функции и процедуры обработки строк.
- •24. Множества. Множество-константа. Операции со множествами.
- •25. Функции. Объявление функции. Описание функции. Возвращаемые значения. Вызов функции.
- •26. Функции. Способы постановки аргументов.
- •27. Процедуры. Объявление процедуры. Описание процедуры. Возвращаемое значение. Вызов процедуры.
- •28. Процедуры. Способы постановки аргументов.
- •29. Записи. Описание. Задание записей константой. Доступ к полям записи.
- •30. Записи. Оператор with.
- •31. Файлы. Разновидность файлов. Описание файлов.
- •32. Текстовые файлы. Назначение текстовых файлов. Открытие и закрытие файла.
- •33. Текстовые файлы. Назначение текстовых файлов. Запись в файл. Считывание из файла.
- •34. Типизированные файлы. Описание типизированных файлов. Назначение типизированных файлов. Открытие и закрытие файлов.
- •35. Типизированные файлы. Назначение типизированных файлов. Запись в файл. Считывание из файла. Поиск в типизированном файле.
- •36. Нетипизированные файлы. Описание нетипизированных файлов. Назначение нетипизированных файлов. Открытие и закрытие файлов.
- •37. Нетипизированные файлы. Назначение нетипизированных файлов. Запись в файл. Считывание из файла. Поиск в нетипизированном файле.
- •38. Модульность программ. Стандартные модули языка Pascal. Подключение модулей.
- •39. Структура модуля. Секция внешних связей. Секция реализации. Секция инициализации.
- •40. Взаимодействие модулей. Компиляция модулей.
17. Оператор циклов for-downto.
Существует аналогичный вариант цикла for, который позволяет производить обработку не от меньшего к большему, а в противоположном направлении:
for i:= first downto last do <оператор>;
Счетчик i (переменная), верхняя граница first (переменная, константа или выражение) и нижняя граница last (переменная, константа или выражение) должны иметь эквивалентные порядковые типы. Если тип нижней или верхней границы не эквивалентен типу счетчика, а лишь совместим с ним, то осуществляется неявное приведение типов.
Цикл for-downto работает следующим образом:
переменной i присваивается значение first;
производится проверка условия, что i>=last;
если условие истинна, то выполняется <оператор>;
значение переменной i уменьшается на единицу;
пункты 2-4 выполняются до тех пор, пока i не станет меньше, чем last; как только это произошло, выполнение цикла прекращается, а управление передается следующему за ним оператору.
Если при этом
first < last, то цикл вообще не будет работать;
first = last, то цикл отработает один раз;
first > last, то цикл будет работать first-last+1 раз.
18-19. Оператор циклов while и repeat-until.
Если заранее неизвестно, сколько раз необходимо выполнить тело цикла, то удобнее всего пользоваться циклом с предусловием (while) или циклом с постусловием (repeat-until).
Общий вид этих операторов таков:
while <условие_1> do <оператор>;
repeat <операторы> until <условие_2>;
Условие окончания цикла может быть выражено переменной, константой или выражением, имеющим логический тип.
Замечание: Обратите внимание, что на каждой итерации циклы for и while выполняют только по одному оператору (либо группу операторов, заключенную в операторные скобки begin-end и потому воспринимаемую как единый составной оператор). В отличие от них, цикл repeat-until позволяет выполнить сразу несколько операторов: ключевые слова repeat и until сами служат операторными скобками.
Так же, как циклы for-to и for-downto, циклы while и repeat-until можно назвать в некотором смысле противоположными друг другу.
Последовательности действий при выполнении этих циклов таковы:
Для while: |
Для repeat-until: |
1. Проверяется, истинно ли <условие_1>. |
1. Выполняются <операторы>. |
2. Если это так, то выполняется <оператор>. |
2. Проверяется, ложно ли <условие_2> |
3. Пункты 1 и 2 выполняются до тех пор, пока <условие_1> не станет ложным. |
3. Пункты 1 и 2 выполняются до тех пор, пока <условие_2> не станет истинным. |
Таким образом, если <условие_1> изначально ложно, то цикл while не выполнится ни разу. Если же <условие_2> изначально истинно, то цикл repeat-until выполнится один раз.
20. Массивы. Описание переменных размерностей. Обращение к компонентам массива.
Массив - наиболее широко используемый структурированный тип данных, предназначенный для хранения нескольких однотипных элементов.
Для того чтобы задать массив, необходимо в разделе описания переменных (var) указать его размеры и тип его компонент(элементов).
array[<тип_диапазон>] of <тип_данных>;
Чаще всего это трактуется так:
array[<левая_граница>..<правая_граница>] of <тип_данных>;
При описании массивов в квадратных скобках указывается тип-диапазон, с помощью которого компилятор определяет общее число элементов массива.
Нумерация компонент массива не обязана начинаться с 1 или с 0, необходимо лишь, чтобы номер последней компоненты был больше, чем номер первой: var x: array [-5..4] of integer;
Многомерные массивы:
var a9: array[1..10,1..20] of real; - двумерный массив 10 х 20
Если вам известны максимальные границы, в которые могут попасть индексы обрабатываемого массива. Скажем, N и М заведомо не могут превосходить 100. Тогда можно выделить место под наибольший возможный массив, а реально работать только с малой его частью:
const nnn=100;
var a: array[1..nnn,1..nnn] of real;
m,n: integer;
Массивы относятся к структурам прямого доступа. Это означает, что возможно напрямую (не перебирая предварительно все предшествующие компоненты) обратиться к любой интересующей нас компоненте массива.
Доступ к компонентам линейного массива осуществляется так:
<имя_массива>[<индекс_компоненты>]
а многомерного - так:
<имя_массива>[<индекс>,_,<индекс>]
