- •Часть 1
- •Предмет и задачи информатики
- •История эвм
- •Состав вычислительной системы
- •Аппаратное обеспечение
- •Программное обеспечение
- •Операционная система
- •Кодирование Двоичный код
- •Кодирование чисел
- •Кодирование текстовых данных
- •Кодирование графических данных
- •Представление цвета в машинной графике
- •Кодирование звуковой информации
- •Прикладное программное обеспечение Системы обработки текстов
- •Интегрированный пакет Microsoft Office
- •Текстовый процессорWord
- •Создание в документе листа Microsoft Excel
- •О рисунках и других графических объектах
- •Закрепление областей листа
- •Скрытие и отображение столбцов и строк
- •Выделение фрагментов документа
- •Ввод данных с клавиатуры
- •Ввод текста
- •Ввод чисел
- •Ввод формул с клавиатуры
- •Установка границ ячеек
- •Работа с диаграммами
- •Работа с базами данных Основные понятия
- •Объекты базы данных
- •Запросы
- •Страницы
- •Макросы и модули
- •Безопасность баз данных
- •Технологии программирования
- •Алгоритм, программа
- •Интегрированная среда разработки приложений в Delphi
- •Стандарт и диалекты языка
- •Основы Паскаля
- •Основные понятия языка Алфавит
- •Имена и идентификаторы
- •Программные элементы
- •Описания
- •Раздел констант
- •Типизированные константы
- •Переменные
- •Функции и процедуры
- •Правила записи текста программы
- •Концепция данных
- •Основные типы данных Целые типы
- •Битовые операции
- •Вещественные типы
- •Тип дата-время
- •Символьные типы
- •Логические типы
- •Выражения
- •Оператор присваивания
- •Составной оператор
- •Раздел меток
- •Оператор перехода
- •Пустой оператор
- •Раздел типов
- •Условный оператор
- •Перечислимые типы (перечни)
- •Оператор варианта
- •Ограниченные типы
- •Операторы цикла
- •Операторы цикла с параметром
- •Оператор цикла с постусловием
- •Оператор цикла с предусловием
- •Регулярные типы (массивы)
- •Многомерные массивы
- •Комбинированные типы (записи)
- •Оператор присоединения
- •Подпрограммы
- •Подпрограммы-процедуры
- •Подпрограммы-функции
- •Формальные и фактические параметры
- •Параметры-значения
- •Параметры-переменные
- •Параметры-константы
- •ПроцедураExit
- •Процедурные типы
- •Множественные типы
- •Оглавление
- •Часть 1
Операторы цикла
Для задания повторяющихся вычислительных процессов служат операторы цикла.
Операторы цикла с параметром
for V := E1 to E2 do S
Здесь for,to,do– служебные слова; V – переменная скалярного типа (кроме real)), называемаяпараметром цикла, E1 и E2 – выражения того же типа, что и V, S – оператор, называемыйтелом цикла.
При выполнении этого оператора происходит присвоение переменной V последовательно возростающих значений от E1 до E2 и выполнение оператора S при каждом значении V. Значения E1 и E2 вычисляются при входе в оператор цикла, значение параметра цикла V не должно изменяться при выполнении S. Если E1 > E2 (что допустимо), то оператор S не выполнится ни разу. При завершении выполнения оператора цикла значение параметра цикла считается неопределенным.
В Паскале есть и другая форма оператора цикла с параметром
for V := E2 downto E1 do S
Здесь downto– служебное слово. В этом случае параметр цикла V принимает последовательно убывающие значения от E2 до E1.
В Delphi переменная – параметр цикла – должна быть описана в том же блоке, в котором помещен цикл.
Замечание. Параметр цикла не обязательно используется в теле цикла, т.е. в операторе S.
Оператор цикла с постусловием
repeat S1; S2; ...Sk until B
Здесь repeat,until – служебные слова, B – логическое выражение, S1, … Sk – операторы.
При выполнении этого оператора цикла последовательность операторов S1, … Sk выполняется один или более раз. Процесс завершается, когда после очередного выполнения заданной последовательности операторов выражение B впервые примет значениеtrue.
Оператор цикла с предусловием
while B do S
Здесь while,do – служебные слова, B – логическое выражение, S – оператор. В этом случае S выполняетсянуль или более раз, но перед каждым его выполнением вычисляется значение выражения B. Оператор S выполняется только, если B = true. Выполнение оператора цикла завершается, когда впервые B примет значение false. Если при первом же вычислении B принимает значение false, то S не выполняется ни разу.
При использовании операторов цикла с предусловием и постусловием необходима осторожность, если в условии фигурируют вещественные числа, т.к. сравнение их на равенство– операция некорректная.
В циклах For, WhileиRepeatможно использовать стандартные процедурыBreakиContinue. ПроцедураBreakпозволяет выйти из цикла, не дожидаясь выполнения условия выхода. ПроцедураContinueпозволяет начать новую итерацию цикла, если предыдущая не завершена.
Регулярные типы (массивы)
Массив – это упорядоченный набор фиксированного количества некоторых значений (компонент массива). Все компоненты должны быть одного типа, который называетсятипом компонентилибазовым типом.
Каждому используемому в программе массиву должно быть присвоено имя полной переменной. Ее значением является весь массив. Каждый компонент массива можно явно обозначить путем указания имени массива, за которым следуетселекторкомпоненты– взятый в квадратные скобки индекс, задающий правило вычисления номера компоненты. Т.е. для ссылки на отдельную компоненту используется запись вида<имя массива>[<индекс>], которую назовемчастичной переменной, так как ее значением является отдельный компонент. Она называетсяпеременной с индексом(например, a[1], b[i+5] и т.п).
В качестве индекса можно использовать выражение, значение которого и определяет номер компоненты массива. Тип значений индексного выражения называют типом индекса. Множество значений типа индекса должно быть пронумерованным ограниченным множеством, тем самым определяя количество компонент и их упорядоченность.
Значением индексного выражения должно быть конкретное данное, по которому можно однозначно установить номер компоненты массива. Поэтому тип индекса может быть только скалярным, множество значений которого ограничено. Это исключает тип real и integer. Так как множество значений ограниченного типа конечно, упорядочено и перенумеровано, то этот тип и используется наиболее часто, причем обычно – это ограниченный целый тип.
При задании регулярного типа кроме типа индекса необходимо задать и тип компонент. Задание такого регулярного типа, как одномерный массив (вектор) имеет вид:
array [<тип индекса>] of <тип компонент>;
где <тип компонент>– имя типа или задание типа.
Каждому задаваемому регулярному типу можно дать имя с помощью описания типа. Переменные регулярных типов вводятся обычным способом с помощью описания в разделе переменных.
Пример.
typeГраницы= 1..100; Вектор =array[границы]ofreal;
var A,B : Вектор; C: array[-10..200] of real;
Перечислимый тип может быть использован в качестве типа индекса, т.к. множество его значений является ограниченным и упорядоченным. В качестве типа индекса можно использовать и стандартные типы boolean и char.
Для ссылки на конкретный массив как единое целое используется полная переменная, т.е. имя переменной соответствующего регулярного типа. Над значениями регулярного типа в Паскале не определено каких-либо операций – не только аналогов арифметических операций, но и операций сравнения. В Паскале нет констант и функций регулярных типов, за исключением строковых констант.
В общем случае значения полных переменных одного и того же регулярного типа могут быть использованы только в операторах присваивания, а в качестве аргументов арифметических операций – только значения отдельных компонент, т.е. переменные с индексом.
Так при наличии в программе описания А и В как переменных одного и того же регулярного типа, если значение А было определено (т.е. всем его компонентам были присвоены конкретные значения), то для присваивания полной переменной В точно того же значения достаточно выполнить оператор присваивания B:=A.
Мы ограничимся рассмотрением статических массивов, для которых количество компонент массива, их упорядоченность и тип должны задаваться явно, т.е. определены до начала выполнения программы. В стандарте Паскаля отсутствует возможность задания динамического регулярного типа, а в Delphi такая возможность предусмотрена, но мы динамические массивы рассматривать не будем.